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 は、'write once - read many' モードで使用されることが期待されています。一度初期化されると、HTTP パラメータは、HTTP メッセージ処理の過程で変更されることは期待されません。」

于 2013-03-18T16:14:36.557 に答える