2016-04-14 18 views
0

私のJavaクライアント経由でhttp POSTを送信したい。クエリのパラメータでhttp POSTを送信する方法

POSTリクエストのために、クエリパラメータと本文の内容を送信する方法はありますか?ここ

は私のJavaのHTTPクライアントである:

@Override 
public ResponseOrError sendPost(String url, String bodyContent) { 
    url = urlUtils.getHttpUrl(url); 

    ResponseOrError responseOrError = new ResponseOrError(); 
    final RetryListenerWithBooleanFlags listener = new RetryListenerWithBooleanFlags(); 
    try { 

     HttpPost httpPost = new HttpPost(url); 
     httpPost.setConfig(requestConfig); 
     Callable<ResponseOrError> callable = getCallable(httpPost); 
     retryer = getRetryer(listener); 
     responseOrError = retryer.call(callable); 
     fillResponseOrError(responseOrError, listener); 

    } catch (Exception e) { 
     responseOrError.error = new Error(); 
     String errorMsg = getStatusCode(responseOrError, listener); 
     responseOrError.error.errorMsg = e.getMessage() + errorMsg; 
    } 
    return responseOrError; 
} 
+1

http://stackoverflow.com/a/3325065/984823 –

+0

URLにパラメータを追加するだけです。 –

答えて

0

は、Java APIを確認してください。

これは動作するはずです。

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("key", "value")); 
post.setEntity(new UrlEncodedFormEntity(params)); 
+0

場合によっては、これは機能しません。 (I.E. secure environments ..) –

0

org.apache.http.clientのHttpPostを使用する理由はありますか?

は、残念ながら、私はそのライブラリ/クラスに慣れていないんだけど、オプションは単にHttpURLConnection

例(手元のコンパイラを持っていないを使用することです。このライブラリを使用するには、何も特別な理由がない場合ので、それは可能性がありますその中のいくつかのミス):

url = url + "?param=value&otherparam=othervalue"; 

使用することを確認します:ように簡単のように

URL url = new URL("http://.."); 
HttpURLConnection httpCon = (HttpURLConnection)url.openConnection(); 
httpCon.setRequestMethod("POST"); //it's a post request 
httpCon.setDoInput(true); //read response 
httpCon.setDoOutput(true); //send Post body 
... = httpCon.getOutputStream(); //Here you go, do whatever you want with this stream 
+0

なぜ 'org.apache.http.client'より' HttpURLConnection'を好むべきですか? –

+0

@ user1065869おそらく味/要求事項/メンテナンス。 'org.apache.http.client'は第三者のライブラリのようですが、' HttpURLConnection'は直接利用できるはずです。サードパーティのライブラリを追加すると、更新プログラム(セキュリティリリース)を監視し、それらのパッチを適用するという良い計画があるはずです(一般的には攻撃面が増えます)。 'HttpURLConnection'の場合、単に最新のjreを実行しなければなりません(これはあなたがやるべきことです)。だから私の個人的な好みは第三者の図書館からほとんど離れていることです。 –

+0

しかし、それはライブラリが何をしているか、どのくらいメンテナンスされているか、どれくらいの複雑さが必要なのかによって決まります。単純なPOST要求の場合、私は個人的には 'HttpURLConnection'にとどまります。しかし、ライブラリが本当に必要なものをたくさん提供するなら、私は積極的に維持し、その背後にあるpplが(セキュリティの観点から)何をしているのかを知っているなら、 –

0

だけで、URLにパラメータを追加し

  • ?:クエリ文字列
  • =を起動するには:その値と
  • &をパラメータを関連付けるには:

パラメータ/値のペアを分離するためにあなたがする必要があります。空白が含まれている場合は、パラメータ値をエンコードします。

、それを行うURLEncoderクラスを使用するには:これにより

String encoded = URLEncoder.encode(value, StandardCharsets.UTF_8); 

を、some value with blank spacessome%20value%20with%20blank%20spacesになります。

関連する問題