我正在尝试创建一个动态的Rest客户端,我可以在其中设置HTTP方法(GET-POST-PUT-DELETE),Query Params和body(Json,plain,XML),这基本上就是我需要的,对于请求,我想我知道我怎么做,但我关心的是阅读答案,因为我知道我应该得到什么(格式)但我不知道如何正确阅读它,到目前为止我返回一个对象,下面代码(仅用于POST,但想法是一样的):
Response responseRest = null;
Client client = null;
try {
client = new ResteasyClientBuilder().establishConnectionTimeout(TIME_OUT, TimeUnit.MILLISECONDS).socketTimeout(TIME_OUT, TimeUnit.MILLISECONDS).build();
WebTarget target = client.target(request.getUrlTarget());
MediaType type = assignResponseType(request.getTypeResponse());
switch (request.getProtocol()) {
case POST: {
if (request.getParamQuery() != null) {
for (VarRequestDTO varRequest : request.getParamQuery()) {
target = target.queryParam(varRequest.getName(), varRequest.getValue());
}
}
responseRest = target.request().post(Entity.entity(new ResponseWrapper(), type));
break;
}
default:
//HTTP METHOD No supported
}
Object result = responseRest.readEntity(Object.class);
}
catch (Exception e) {
response.setError(Boolean.TRUE);
response.setMessage(e.getMessage());
e.printStackTrace();
} finally {
if (responseRest != null) {
responseRest.close();
}
if (client != null) {
client.close();
}
}
我基本上需要的是以所需的格式返回对象,并且在其中调用它应该以正确的格式进行转换,我只需要它是动态的并用于任何服务。 感谢
答案 0 :(得分:0)
ReST客户端向ReST服务发出的每个请求都会传递"接受"头。
这是为了向服务指示客户端愿意接受的资源的MIME类型。 在上面的例子中,你可接受的格式是什么(json / plain text /等)?
取决于"接受"您选择的格式,以及"内容类型"您收到的标题,您可以编写一个反序列化程序来接受该数据并进行处理。
此外,不要返回过于通用的Object,而是考虑将可读的Stream返回给调用者。