UPDATE
I have almost been able to complete my RESTful communication, though I have to questions remaining:
1 – How do I assign my XML to the connection (the code below will give an example of my situation)?
Calling the 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 – Will the class below result in a valid XML-output, considering the last code example (the Web Service)?
Class to send using RESTful
@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;
}
Try this:
Check this link for using REST with standard
URL: http://rest.elkstein.org/2008/02/using-rest-in-java.htmlEDIT
First of all, you need to change your
getByAccountrequest toPOSTrequest, becauseGETrequest doesn’t allow to pass any information in body, it uses only request parameters in url. But you send XML, so usePOST.Try following version of your send method: