java.lang.ClassNotFoundException: org.apache.http.util.Args
昨天在用HttpClient做接口调用时,发现请求没有响应,也没有任何提示信息,但是在另外一个项目中却可以正常调用接口。于是,怀疑是系统本身做了什么限制,努力尝试,结果还是不行。后来在执行的地方改了部分代码,结果抛出ClassNotFoundException。有抛异常就好办了。可是项目中,明明有jar,而且还能跳转过去,为何还会报类找不到异常呢,后来网上找了些问题,说是jar冲突(使用Maven管理)。然后对比了下两个项目的jar,发现确实是不一样。虽然两个系统用的jar就差一个版本,但是却相差甚远。后来换了下版本就OK了。
public static String httpPostWithJSON(String url, String json) throws Exception {
String encoderJson = URLEncoder.encode(json, "UTF-8");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-type","application/json; charset=utf-8");
httpPost.setHeader("Accept", "application/json");
httpPost.setEntity(new StringEntity(json, Charset.forName("UTF-8")));
long startTime = System.currentTimeMillis();
// 以下代码调用时没有响应,直接跳过,也不报任何异常
**HttpResponse response = httpClient.execute(httpPost);**
int statusCode = response.getStatusLine().getStatusCode();
long endTime = System.currentTimeMillis();
logger.info("statusCode:" + statusCode);
logger.info("调用API 花费时间(单位:毫秒)" + (endTime - startTime));
if (statusCode != HttpStatus.SC_OK) {
logger.error("Method failed:" + response.getStatusLine());
}
String body = EntityUtils.toString(response.getEntity());
return body;
}
文章参考: http://blog.csdn.net/z69183787/article/details/46335993