【发布时间】:2015-04-13 00:18:06
【问题描述】:
我正在尝试使用 apache http-components 客户端库从 servlet 进行 http post 调用,但遇到以下错误。
java.lang.NoSuchMethodError:org.apache.http.entity.StringEntity.(Ljava/lang/String;Lorg/apache/http/entity/ContentType;)V 在 org.apache.http.client。 entity.UrlEncodedFormEntity.(UrlEncodedFormEntity.java:77)
在我尝试在代码中创建 UrlEncodedEntity 对象时
我查看了另一篇帖子,他们说,这主要是因为构建路径的差异,我将所有 http-components 的库放在 WEB_INF/lib 中(我希望这是正确的)库的版本是 4.4 .这是我写的代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out =response.getWriter();
out.println("Hit");
String serviceUrl = request.getParameter("url");
String data = request.getParameter("data");
String type = request.getParameter("type");
String dataType = request.getParameter("dataType");
if(null != serviceUrl && !serviceUrl.trim().equals("")) {
if(type.equalsIgnoreCase("POST")){
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://10.53.204.233:6504/app/service/"+serviceUrl);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("type",type ));
nameValuePairs.add(new BasicNameValuePair("dataType",dataType ));
nameValuePairs.add(new BasicNameValuePair("data",data ));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(nameValuePairs, Consts.UTF_8);
post.setEntity(entity);
HttpResponse responseTeamServer = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(responseTeamServer.getEntity().getContent()));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line);
}
response.getWriter().write(sb.toString());
response.getWriter().flush();
response.getWriter().close();
}
catch (IOException e) {
e.printStackTrace();
}
} finally {
}
}
else{
}
}
else {
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
}
感谢您提供这方面的任何帮助或指导。 谢谢
【问题讨论】:
-
我也有类似的问题。你解决了吗?
-
@Dan 我认为问题是类路径中库的多个版本。
标签: java servlets post httpclient apache-httpclient-4.x