I don't understand why when I receive a json encoded string this is not decoded automatically. I tried this code using Apache CFX 3.1.4 or Jersey 2.22.1:
Client client = ClientBuilder.newClient().register(JSONProvider.class);
WebTarget target = client.target("http://example.org/rest/service1");
target = target.queryParam("method", "method1");
Entity<EndpointRequest> entity = Entity.entity(new EndpointRequest("0000"),
MediaType.APPLICATION_JSON);
Response response = target.request()
.accept(MediaType.APPLICATION_JSON)
.post(entity);
System.out.println( response.getStatus() );
if (response.getStatus() == 200) {
// The problem comes here
String basePath = response.readEntity(String.class);
System.out.println( basePath );
}
The request is successfully executed but basePath
contains "\/opt\/local\/application\/rest\/"
(backslash and double quotes included)
basePath
should instead contain this: /opt/local/application/rest/
It seems to me, the json deserialization hasn't be triggered when it should.