在项目中使用jesey client api访问接口的时候,出现了2种异常信息。分别如下:
- com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class com.xxx.ResultData, and Java type class com.xxx.ResultData, and MIME media type application/json; charset=UTF-8 was not found
- com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class java.util.HashMap, and MIME media type, application/json, was not found
public class JerseyClientTest {
private static Client client;
private static String targetURL = "http://192.168.0.175:8081/api/test";
private static int status;
static ResultData<?> result;
static{
ClientConfig cc = new DefaultClientConfig();
client = Client.create(cc);
client.setConnectTimeout(30000);
client.setReadTimeout(30000);
}
public String doPost(Object input){
try {
WebResource webResource = client.resource(targetURL);
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class,input);
status = response.getStatus();
System.out.println("status code: "+status);
result = response.getEntity(ResultData.class);
System.out.println("result data: "+result.toJsonString());
} catch (Exception e) {
e.printStackTrace();
}
return "test";
}
@Test
public void testPostWithJSON() {
System.out.println("使用json对象提交请求:\n"+JSONHelper.map2json(_paramsMap()).toString());
doPost(JSONHelper.map2json(_paramsMap()));
}
@Test
public void testPostWithJSONString() {
System.out.println("使用json字符串提交请求:\n"+JSONHelper.map2json(_paramsMap()).toString());
doPost(JSONHelper.map2json(_paramsMap()).toString());
}
@Test
public void testPostWithMap() {
System.out.println("使用map对象提交请求:\n"+_paramsMap().toString());
doPost(_paramsMap());
}