Java REST client sans schéma

Objectif

Client Java pour Yahoo HotJobs Cv de Recherche de l'API REST.

Fond

Je suis habitué à l'écriture web-service clients pour l'Api SOAP, où wsimport génère proxy talons et vous êtes opérationnel. Mais c'est une API REST, ce qui est nouveau pour moi.

Détails

Progrès

J'ai regardé à la question Le repos des clients pour Java?mais les solutions automatisées, il suppose que vous êtes offrant à la fois le serveur et le client, avec JAXB invoquée sur Pojo de générer un schéma et une API REST.

À l'aide de Jersey (un JAX-RS mise en œuvre), j'ai été capable de faire un manuel de la requête HTTP:

import com.sun.jersey.api.client.*;

...

ClientConfig clientConfig = new DefaultClientConfig();
Client client = Client.create(clientConfig);

WebResource webResource = client.resource("https://hj.yahooapis.com/v1/HJAuthTokens");
webResource.accept("application/xml");

//body is a hard-coded string, with replacements for the variable bits
String response = webResource.post(String.class, body);

//parse response into a org.w3c.dom.Document
//interface with Document via XPATH, or write my own POJO mappings

La réponse peut ressembler à:

<?xml version="1.0" encoding="utf-8"?>   
<Response>   
    <ResponseCode>0</ResponseCode>   
    <ResponseMessage>Login successful</ResponseMessage>
    <Token>NTlEMTdFNjk3Qjg4NUJBNDA3MkJFOTI3NzJEMTdDNDU7bG9jYWxob3N0LmVnbGJwLmNvcnAueWFob28uY29tO0pVNWpzRGRhN3VhSS4yQVRqRi4wWE5jTWl0RHVVYzQyX3luYWd1TjIxaGx6U0lhTXN3LS07NjY2MzM1OzIzNDY3NTsxMjA5MDE2OTE5OzZCM1RBMVNudHdLbl9VdFFKMFEydWctLQ==</Token>   
</Response>  

Ou, il peut ressembler à:

<?xml version="1.0" encoding="utf-8"?>   
<yahoo:error xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" xml:lang="en-US">   
    <yahoo:description>description</yahoo:description>   
    <yahoo:detail>   
        <ErrorCode>errorCode</ErrorCode>   
    </yahoo:detail>   
</yahoo:error>  

Questions

  • Est-il un moyen de générer automatiquement des Pojo qui peut être mobilisé l'/unmarshalled sans schéma?
  • Devrais-je tenter de produire ces objets Pojo à la main, avec JAXB annotations?
  • Est-il un outil que je devrais être en tirant parti donc je n'ai pas à faire tout cela manuellement?

source d'informationauteur Chase Seibert