2011-07-21 20 views
0

アンドロイド用のJavaでPOSTリクエストを送信したいと思います。アンドロイド用httpポストリクエスト

私はこのコードを使用し

HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("myUrl"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("artist", "Amy Macdonald")); 
     nameValuePairs.add(new BasicNameValuePair("title", "Don't Tell Me That It's Over")); 
     nameValuePairs.add(new BasicNameValuePair("album", "Don't Tell Me That It's Over")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 

問題は、私が使用している場合ということです:

HttpResponse response = httpclient.execute(httppost); 

私は例外を取得し、このWebサービスは確かに働いている、

答えて

0

どのスキームに投稿していますか? httpまたはhttps? ClientConnectionManagerHttpParamsでクライアントを正しくセットアップしましたか?ログにはどのような例外がありますか?

データを投稿するための私が持っているいくつかのコードの間に私が見る唯一の違いは、(あなたのクライアントと仮定すると、正しくセットアップされている)私はこのような実行方法でのHttpContextを使用することである:コンテキストがで設定され

httpPost = new HttpPost(urlString); 
httpPost.setEntity(new UrlEncodedFormEntity(nvps)); 
response = httpClient.execute(httpPost, httpContext); 
statusCode = response.getStatusLine().getStatusCode(); 

httpContext = new BasicHttpContext(); 
httpContext.setAttribute(ClientContext.COOKIE_STORE, new BasicCookieStore()); 

とコンストラクタHTTPSを使用している場合は、キーストアの要件との接続の他の安全な側面を扱うことができるので、あなたはより多くの情報を設定し、クライアントが必要となります。

0

Javadoc州:

HTTPメッセージの要素として使用される名前/値ペアのパラメータ。

parameter    = attribute "=" value 
attribute    = token 
value     = token | quoted-string 

HTTP POSTが(たとえばあたり)URLに属性を追加していないので、それはエンティティボディの形でそれをしません。単純な文字列ベースのエンティティまたはMIMEベースのエンティティボディを持つことができます。

NameValuePairは、BasicNameValuePairという名前のクラスを実装しています(LIKE HTTPパラメータと考える)、パラメータと値を指定します。

関連する問題