RESTful WebService verbraucht XML,wie Sie es nennen?
UPDATE
Habe ich fast in der Lage gewesen, um meine RESTful-Kommunikation, obwohl ich die Fragen bleiben:
1 - Wie ordne ich meine XML für die Verbindung (den code unten ein Beispiel von meiner situation)?
Aufrufen der Web-Service -
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 - Wird die folgende Klasse Ergebnis in einem gültigen XML-Ausgabe, in Anbetracht der letzten code-Beispiel (Web-Service)?
Klasse zu senden, verwenden Erholsamen
@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);
}
}
Web-Service -
@GET
@Path("/byAccount")
@Consumes("application/xml")
@Produces("application/xml")
public Person getByAccount(Account account) {
//business logic
return person;
}
InformationsquelleAutor Menno | 2012-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Überprüfen Sie diesen link für die Verwendung von REST mit standard
URL
: http://rest.elkstein.org/2008/02/using-rest-in-java.htmlBEARBEITEN
Zunächst, Sie brauchen, um Ihre
getByAccount
AnfragePOST
Anfrage, weilGET
Anfrage nicht weiterleiten lassen alle Informationen in Körper, es verwendet nur die request-Parameter in der url. Aber Sie senden XML zu verwenden, soPOST
.Versuchen Sie folgenden version Ihres send-Methode:
Ich habe meine Antwort aktualisiert
Danke Nikita! Diese Lösung vereinfacht meinen code und macht einen tollen job.
wenn seine Anfrage ist idempotent, sollte er auch nicht verwenden, SETZEN Sie statt der POST ?
link fixed nabisoft.com/tutorials/java-ee/...
InformationsquelleAutor Nikita Beloglazov
Könnten Sie Jersey-Client-API, (ein weitere link) für die meisten ausreichend fordert.
InformationsquelleAutor Alex Stybaev
Können Sie versuchen, Spring 3
RestTemplate
. Sehr einfach zu lernen und sehr mächtig.Mehr hier:
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/
InformationsquelleAutor Maciej Ziarko