在移动应用程序和Web服务之间有某种代理,我们在发出发布请求时对响应感到困惑。我们收到状态为200: OK的响应。但是我们找不到/提取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));
我们正在使用JAX-RS。有人能提供一些提示,从服务器响应中提取JSON主体(字符串)吗?
对于我的用例,前面的答案都不起作用,因为我正在编写一个服务器端单元测试,该测试由于以下错误消息而失败,如无法模拟Glassfish泽西客户端响应对象问题中所述:
java.lang.IllegalStateException: Method not supported on an outbound message.
at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:145)
at ...
以下代码行出现此异常:
String actJsonBody = actResponse.readEntity(String.class);
解决方法是将问题代码行转化为:
String actJsonBody = (String) actResponse.getEntity();
试试这个:
String output = response.getEntity(String.class);
编辑
感谢@Martin Spamer提到它将适用于Jersey 1。仅限x罐。对于球衣2。x使用
String output = response.readEntity(String.class);
问题内容: 在移动应用程序和Web服务之间具有某种代理,发出发布请求时的响应使我们感到困惑。我们收到状态为200的回复:OK。但是我们找不到/提取JSON响应主体。 我们正在使用JAX-RS。有人可以提供一些提示来从服务器响应中提取JSON正文()吗? 问题答案: 试试这个: 编辑 感谢@Martin Spamer提及它仅适用于Jersey 1.x罐子。适用于Jersey 2.x
我通过一个spring上下文注入了一个JAX RS客户端,如下所示: 在成功响应(200、202、204)的情况下,如何访问响应状态?
我使用这个代码来调用泽西客户端的泽西JAX-RS服务。 当响应状态代码为 200 时,此代码工作正常。但对于 200 以外的任何内容,此代码会引发异常。 如何修改此代码,以便根据响应的状态代码执行某些操作?
我正在使用泽西JAX-RS客户端(版本2.0)。我知道它使用Jackson ObjectMapper来生成和解析JSON。我想使用相同的对象为一些java类生成JSON,这样我就可以将它们写入日志。 我知道我可以创建一个新的ObjectMapper实例,但我更喜欢请求泽西客户端给我一个它正在使用的引用。我该怎么做呢?泽西2.0知道Jackson,因为它包含一个JacksonFeature类,该类首
问题内容: 我编写了简单的REST Web服务客户端类,该类使用JAX-RS 2.0客户端API发出REST请求。我试图弄清楚如何为每个调用设置请求超时。这是请求的代码: 问题答案: 为此,您可以先创建一个ClientConfig,然后在创建新客户端时将其作为参数提供。
我已经创建了一个简单的Jersey客户端,它能够成功地使用有效负载执行POST请求。但现在它正在等待来自httpendpoint的响应: 问:代码是否有可能不等待响应。 我试图阅读泽西客户端文档,以确定我的代码是否有可能不等待响应?我看到我们只能在读取响应后关闭连接,但在我的情况下没有用。我想在将有效负载发布到endpoint后立即关闭连接。 我只需要触发并忘记POST请求,因为我不关心响应。这是