Reposant WebService consomme XML,comment l'appeler?
Mise à JOUR
J'ai presque été en mesure de terminer ma Reposante de la communication, même si j'ai des questions restant:
1 - Comment puis-je céder mon XML pour la connexion (le code ci-dessous donne un exemple de ma situation)?
L'appel du Service Web
public Person getByAccount(Account account) {
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
XStream xstream = new XStream();
String xmlIn = xstream.toXML(account);
//Put the xmlIn into the connection
BufferedReader br = new BufferedReader(new InputStreamReader(
(connection.getInputStream())));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null)
sb.append(line);
String xmlOut = sb.toString();
connection.disconnect();
return (Person) xstream.fromXML(xmlOut);
}
2 - la classe ci-dessous le résultat dans un XML valide de sortie, compte tenu de l'exemple de code (le Service Web)?
Classe à envoyer à l'aide Reposant
@XmlRootElement(name="people")
public class People {
@XmlElement(name="person")
public List<Person> people;
public People() {
people.add(new Person(1, "Jan"));
people.add(new Person(2, "Hans"));
people.add(new Person(3, "Sjaak"));
}
public List<Person> all() {
return people;
}
public Person byName(String name) {
for(Person person : people)
if(person.name.equals(name))
return person;
return null;
}
public void add(Person person) {
people.add(person);
}
public Person update(Person person) {
for(int i = 0; i < people.size(); i++)
if(person.id == people.get(i).id) {
people.set(i, person);
return person;
}
return null;
}
public void remove(Person person) {
people.remove(person);
}
}
Service Web
@GET
@Path("/byAccount")
@Consumes("application/xml")
@Produces("application/xml")
public Person getByAccount(Account account) {
//business logic
return person;
}
OriginalL'auteur Menno | 2012-06-03
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Vérifier ce lien pour l'utilisation RESTE à la norme
URL
: http://rest.elkstein.org/2008/02/using-rest-in-java.htmlMODIFIER
Tout d'abord, vous avez besoin de changer votre
getByAccount
demande àPOST
demande, parce queGET
demande ne permet pas de transmettre toute l'information dans le corps, il utilise uniquement les paramètres de la requête dans l'url. Mais vous l'envoyez XML, afin de l'utiliserPOST
.Essayer de suite à la version de votre méthode d'envoi:
J'ai mis à jour ma réponse
Merci Nikita! Cette solution simplifie mon code et fait un excellent travail.
si sa demande est la quantité, ne devrait-il pas être à l'aide de la METTRE à la place de la POSTE ?
lien fixe nabisoft.com/tutorials/java-ee/...
OriginalL'auteur Nikita Beloglazov
Vous pouvez utiliser Maillot Client API, (un lien de plus) pour plus de suffisamment d'appels.
OriginalL'auteur Alex Stybaev
Vous pouvez essayer de Printemps 3
RestTemplate
. Très facile à prendre en main et assez puissant.Plus ici:
http://blog.springsource.org/2009/03/27/rest-in-spring-3-resttemplate/
http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/client/RestTemplate.html
http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1/
OriginalL'auteur Maciej Ziarko