use*_*714 63 java json web-services cxf jax-rs
在移动应用程序和Web服务之间使用某种代理,我们对发出帖子请求时的响应感到困惑.我们收到状态为200的回复:好的.但我们找不到/提取JSON响应体.
Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(WEBSERVICE_BASE_LOCATION + "mobileDevices?operatorCode=KPNSCP");
String jsonString = "{\"osVersion\":\"4.1\",\"apiLevel\":16,\"devicePlatform\":\"ANDROID\"}";
Builder builder = webTarget.request();
Response response = builder.post(Entity.json(jsonString));
Run Code Online (Sandbox Code Playgroud)
我们正在使用JAX-RS.有人可以提供一些提示String从服务器响应中提取JSON body()吗?
Jun*_*san 141
试试这个:
String output = response.getEntity(String.class);
Run Code Online (Sandbox Code Playgroud)
编辑
感谢@Martin Spamer提到它只适用于Jersey 1.x罐子.对于Jersey 2.x使用
String output = response.readEntity(String.class);
Run Code Online (Sandbox Code Playgroud)
col*_*nic 16
我刚刚找到了jaxrs-ri-2.16的解决方案 - 只需使用
String output = response.readEntity(String.class)
这按预期提供内容.
ent*_*erd 10
对于我的用例,之前的答案都没有起作用,因为我正在编写一个服务器端单元测试,由于无法模拟Glassfish Jersey客户端响应对象问题中描述的以下错误消息而失败:
java.lang.IllegalStateException: Method not supported on an outbound message.
at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:145)
at ...
Run Code Online (Sandbox Code Playgroud)
此异常发生在以下代码行中:
String actJsonBody = actResponse.readEntity(String.class);
Run Code Online (Sandbox Code Playgroud)
解决方法是将问题代码行转换为:
String actJsonBody = (String) actResponse.getEntity();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
118762 次 |
| 最近记录: |