我正在尝试为通过REST公开的服务创建一个客户端。我有多个类扩展单个类。
现在当我发送请求并获得响应时,每次我需要输入特定类的响应时。我正在尝试自动执行此过程,这可以在运行时实现吗?
我正在考虑使用泛型和反射但无法前进。我真正想要实现的只是提到一个唯一的字符串或说请求,我必须能够得到完全相同的响应而不用类型转换它回应类。
通过使用泛型,我成功地减少了一些用于类型转换的代码,但我仍然不满意,因为我想在运行时完全实现它。
RequestClass request=(RequestClass)getRequest(some attributes);
output=(Responseclass)response.getResult();
每次我需要提及请求和响应类时,我都不想这样做。
我可以做一些事情,我可以将请求和响应类映射到一个键或一个字符串,并根据它,代码将获取请求和响应类并根据它执行操作(不确定)。 / p>
请指导我这样做,或任何其他方式我可以做上述事情。 提前谢谢。
答案 0 :(得分:-1)
考虑使用众多Java REST库中的一个。我们的客户端使用Jersey API来处理对基于Python的RESTful服务器的请求和响应。
Jersey使用名为ClientResponse
的类来存储通用响应数据。您可以使用getEntity
方法将响应作为特定类型返回。
以下是我的代码的摘录,它只处理字符串,但您可以看到它是如何扩展的:
ClientResponse response; //a Jersey class
String responseText;
WebResource odbc = resourceCollection.path("ODBC"); //another Jersey class
try {
//we send a POST and get a response stored as generic
response = odbc.type(media)
.accept(MediaType.APPLICATION_XML,MediaType.TEXT_PLAIN)
.post(ClientResponse.class, formdata);
//we pull out the response entity as a string
responseText = response.getEntity(String.class);
} catch (UniformInterfaceException e) {
write("<UniformInterfaceException>\n");
write(" Response type was not expected\n");
write("</UniformInterfaceException>\n");
return;
} catch (ClientHandlerException e) {
write("<Error>\n");
write(" Unable to connect or connection refused\n");
write("</Error>\n");
return;
答案 1 :(得分:-1)
public class DynamicCasting{
DynamicCasting e1=new DynamicCasting();
private Object obj=new Object();
DynamicCasting.doSomething(obj);
public static DynamicClass doSomething(DynamicClass dynClassObject){
return dynClassObject;
}
}
The obj will be type casted to DynamicClass in this example.