使用 Java REST 客户端(Apache CXF 或 Jersey)读取字符串
Reading a string with Java REST Client (Apache CXF or Jersey)
我不明白为什么当我收到 json 编码的字符串时,它没有自动解码。
我使用 Apache CFX 3.1.4 或 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 );
}
请求执行成功但basePath
包含"\/opt\/local\/application\/rest\/"
(包括反斜杠和双引号)
basePath
应该包含这个:/opt/local/application/rest/
在我看来,json 反序列化没有在应该触发的时候触发。
您创建了一个 Client 和一个 WebTarget,但从未真正使用过它们。您最终改用实体和响应。我不确定您使用的是什么库,但我认为您需要实际使用 Ciient 和 WebTarget 来调用 JSONProvider。
问题是服务器响应。服务器不应该 return 只有带引号的字符串,即使编码正确,因为 a string is not a valid JSON object.
我不明白为什么当我收到 json 编码的字符串时,它没有自动解码。 我使用 Apache CFX 3.1.4 或 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 );
}
请求执行成功但basePath
包含"\/opt\/local\/application\/rest\/"
(包括反斜杠和双引号)
basePath
应该包含这个:/opt/local/application/rest/
在我看来,json 反序列化没有在应该触发的时候触发。
您创建了一个 Client 和一个 WebTarget,但从未真正使用过它们。您最终改用实体和响应。我不确定您使用的是什么库,但我认为您需要实际使用 Ciient 和 WebTarget 来调用 JSONProvider。
问题是服务器响应。服务器不应该 return 只有带引号的字符串,即使编码正确,因为 a string is not a valid JSON object.