我正在编写一个客户端来使用RestService,我必须从响应中读取一个实体,我完全混淆了应该使用哪个方法(getEntityvs readEntity).
每当我收到WebApplicationException时,我都必须检索实体.
所以,我的代码或多或少看起来像.
catch(WebApplicationException ex) {
// Do something with ex.getResponse
}
Run Code Online (Sandbox Code Playgroud)
从我测试过的,
ex.getResponse().hasEntity() ---> true
ex.getResponse().getEntity() == null ---> true
Run Code Online (Sandbox Code Playgroud)
我不知道它是如何工作的,但如果第一个是真的,那么第二个陈述是如何成真的.
令人惊讶的是,readEntity对我来说很好,我能够从响应中读出实体.
但是,通过readEntity读取实体后,
这个电话给出了错误.
ex.getResponse().getEntity() == null --> false
Run Code Online (Sandbox Code Playgroud)
有人能帮我理解幕后真的发生了什么吗?
Pau*_*tha 12
该Response班有两个用途:服务器端和客户端.在服务器端,它被称为出站响应.在客户端,它是入站响应.
出站
@GET
public Response get() {
MyModel model = new MyModel();
return Response.ok(model).build();
}
Run Code Online (Sandbox Code Playgroud)
入站
Response response = ClientBuilder.newClient().target(url).request().get();
Run Code Online (Sandbox Code Playgroud)
该getEntity()方法旨在用于服务器端,因为您想获取实体对象.对我们来说没什么用处,但是泽西岛会用它来让实体对象在发送之前对它进行序列化.
该readEntity()方法将在客户端使用,因为您正在尝试读取实体流.如果您尝试在服务器端调用此方法,则会收到错误消息,指出您无法读取出站响应中的流.
就你所经历的行为而言,我无法解释他们为何如此实施.
| 归档时间: |
|
| 查看次数: |
5722 次 |
| 最近记录: |