Quantcast
Viewing latest article 26
Browse Latest Browse All 43

Java REST client without schema

Goal

Java client for Yahoo's HotJobs Resumé Search REST API.

Background

I'm used to writing web-service clients for SOAP APIs, where wsimport generates proxy stubs and you're off and running. But this is a REST API, which is new to me.

Details

Progress

I looked at question Rest clients for Java?, but the automated solutions there assume you are providing both the server and the client, with JAXB invoked on POJOs to generate a schema and a REST API.

Using Jersey (a JAX-RS implementation), I have been able to make a manual HTTP request:

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 bitsString 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

The response can look like:

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

Or, it can look like:

<?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

  • Is there a way to auto-generate POJOs which can be marshalled/unmarshalled without a formal schema?
  • Should I attempt to generate those POJOs by hand, with JAXB annotations?
  • Is there some tool I should be leveraging so I don't have to do all this manually?

Viewing latest article 26
Browse Latest Browse All 43

Trending Articles