1
HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpPost httpMethod = new HttpPost(this.transformURL(request));
            BasicHttpParams params = new BasicHttpParams();
            params.setParameter("name", name);
            httpMethod.setParams(params);
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            httpclient.execute(httpMethod, responseHandler);
        }catch{
           LOG.error("Error");
        } finally { 
          httpclient.getConnectionManager().shutdown();
        }

我有上面的代码,我试图传入一个名称变量作为参数,以便在另一个方法中被request.getParameter("name").

它似乎不起作用,当我调试时,我可以看到参数已设置,但是当我按照它执行下一个方法时,它不会获取参数。

有什么建议么?

编辑:

我添加了这个,效果很好

 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("name", request.getParameter("name")));
            httpMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
4

1 回答 1

0

你检查了这个例子吗?它使用类BasicNameValuePair而不是BasicHttpParams像你一样。

此外,HttpClient 3.x 版的文档也这样做:

    PostMethod post = new PostMethod("http://jakarata.apache.org/");
    NameValuePair[] data = {
      new NameValuePair("user", "joe"),
      new NameValuePair("password", "bloggs")
    };
    post.setRequestBody(data);
    // execute method and handle any error responses.
    ...
    InputStream in = post.getResponseBodyAsStream();
    // handle response.

更新BasicHttpParams该类是HttpParams接口的实现,正如下面@Perception 所指出的,它是一组“自定义 HTTP 客户端行为”的属性。来自HttpParams javadoc“HttpParams 预计将用于‘一次写入 - 多次读取’模式。一旦初始化,HTTP 参数预计不会在 HTTP 消息处理过程中发生变化。”

于 2013-03-18T16:14:36.557 回答