
Build.gradle:
compile group: 'org.codehaus.jackson', name: 'jackson-mapper-lgpl', version: '1.9.13'
compile group: 'org.codehaus.jackson', name: 'jackson-core-lgpl', version: '1.0.1'
compile group: 'httpunit', name: 'httpunit', version: '1.3'
分别引用jackson包和WebConversation/WebResponse等发送WebRequest相关的包。 点这个刷新来添加引用。
Main中调用请求
String url ="http://****"; // Api的接口 NormalService normalService; //NormalService是用来接收API的反序列化类
normalService = (NormalService)test.CallResetAPI(Class.forName("NormalService"),url,"GET");
下面是CallResetAPI部分,是用了Java中的泛型,关于Java的泛型请参照http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebResponse;
import org.codehaus.jackson.map.ObjectMapper; /**
* Created by ygshen on 2015/3/3.
*/
public class test {
public static <T> T CallResetAPI(Class<T> tClass, final String url, String method) throws Exception { WebConversation conversation = new WebConversation();
WebResponse response = conversation.getResponse(url);
String respStream = response.getText();
return ReadObject(
tClass,
respStream);
} private static <T> T ReadObject(
Class<T> tClass,
String stream) throws Exception {
T data = tClass.newInstance(); try {
data = new ObjectMapper().readValue(stream,tClass); } catch (Exception e) {
// Handle the problem
throw e;
}
return data;
} }
下面是反序列化的类代码
import java.io.Serializable;
import java.util.List; /**
* Created by ygshen on 2015/3/3.
*/
public class NormalService implements Serializable
{
public List<Service> serviceList;
public int count;
public String env;
public Boolean success;
} // Service部分代码 import java.io.Serializable;
import java.util.List; /**
* Created by ygshen on 2015/3/3.
*/ public class Service implements Serializable
{ public String serviceCode; public String serviceName;
public String serviceNamespace;
public String serviceContacts;
public List<ServiceEndpoint> endpointList;
} /**
* Created by ygshen on 2015/3/3.
*/
public class ServiceEndpoint {
public String Test1;
public String Test2;
public String Test3;
}
这样只要测试Main函数中的输出就可以了。