Hi Matthieu,
What if you change JAXBElement<YodaRequest> to YodaRequest ?
If you enable logging and tracing on the server-side can you send me
the server-side log?
<init-param>
<param-name>com.sun.jersey.config.feature.Trace</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-
name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-
value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
</init-param>
<init-param>
<param-
name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-
value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
</init-param>
I will try and reproduce on Monday.
Paul.
On Jun 11, 2010, at 5:39 PM, VINCENT Matthieu (Prestataire) wrote:
> Hi,
>
> I’m trying to develop a client/server REST service. But when I’m
> launching my client, I got an 400 error.
> Don’t understand why
>
> Here is my exception :
> com.sun.jersey.api.client.UniformInterfaceException: Status: 400
> at
> com.sun.jersey.api.client.WebResource.handle(WebResource.java:512)
> at com.sun.jersey.api.client.WebResource.access
> $200(WebResource.java:68)
> at com.sun.jersey.api.client.WebResource
> $Builder.put(WebResource.java:424)
> at Requestor.doRequestWithData(Requestor.java:53)
> at RestTest.main(RestTest.java:37)
>
> Here is the client :
> public class RestTest {
>
> public static void main(String[] args) {
>
> try {
> Requete1 req = new Requete1();
> URI uri = UriBuilder.fromUri("http://localhost/yoda-client/service/yoda
> ").port(4975).build();
>
> WebResource web = Client.create().resource(uri);
>
> Requestor reque = new Requestor(web);
>
> reque.doRequestWithData(req);
> } catch (Exception ex) {
> ex.printStackTrace();
> }
>
> Here is the requestor :
> @Produces(MediaType.APPLICATION_XML)
> public final class Requestor implements YodaRequestor {
>
> private WebResource web;
>
> List<Map<ServiceParameter, String>> dataToSend;
>
> public Requestor(WebResource w) {
> this.web = w;
> }
>
> public ServiceResponse doRequestWithData(YodaRequest req) {
> return web.accept("application/
> xml").type(MediaType.APPLICATION_XML).put(ServiceResponse.class,req);
> }
>
> Here is the object (quite simple…) :
> @XmlRootElement(name="req")
> public class Requete1 {
>
> }
>
> Here is the Service which receive messages :
> @Path("/yoda")
> @Produces(MediaType.APPLICATION_XML)
> public final class Service {
>
> @PUT
> @Consumes(MediaType.APPLICATION_XML)
> public final ServiceResponse
> doServiceWithData(JAXBElement<YodaRequest> request) {
>
> System.out.println(".... In doServiceWithData ....");
> return new ServiceResponse();
>
> }
>
> Thanks in advance for explanation
> Matthieu
>
>
> _______________________________________
>
> Matthieu VINCENT (Prestataire)
>
> Application Antenne
> DSI Canal+ France
> 1 place du spectacle
> 92863 - Issy-Les-Moulineaux Cedex 9
>