2012-02-22 26 views
14

JSONテキスト{}をWebサービスに送信して応答を読みたいとします。どのように私はアンドロイドからこれを行うことができますか?など、コンテンツのヘッダを設定し、リクエストオブジェクトを作成するなどの手順はどのようなものです私のコードは、私がやっていること間違いここAndroidでHttpClientリクエストでJSONオブジェクトを送信するにはどうすればよいですか?

public void postData(String result,JSONObject obj) { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpParams myParams = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(myParams, 10000); 
    HttpConnectionParams.setSoTimeout(myParams, 10000); 

    String json=obj.toString(); 

    try { 

     HttpPost httppost = new HttpPost(result.toString()); 
     StringEntity se = new StringEntity(obj.toString()); 
     se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
     httppost.setEntity(se); 

     HttpResponse response = httpclient.execute(httppost); 
     String temp = EntityUtils.toString(response.getEntity()); 
     Log.i("tag", temp); 


    } catch (ClientProtocolException e) { 

    } catch (IOException e) { 
    } 
} 

ある

それは誤り が、とき私は不正な要求を示しているためplzは私を修正私は、それは私がまた

httppost.setHeader("Content-type", "application/json"); 

でこれを行う成功し200としてステータスがOK

+0

このタイプ 'entity.setContentType( "アプリケーション/ JSON;のcharset = UTF-8")を設定してみてください。 \t \t \t \t entity.setContentEncoding(新しいBasicHeader(HTTP.CONTENT_TYPE、 \t \t \t \t \t \t "アプリケーション/ JSON;のcharset = UTF-8" は、)); ' – MKJParekh

+0

@Soniないその私のために正常に動作していない、私はそれを試してみましたが、それは私の唯一のミスはポストhttppost.setHeader(「コンテンツタイプ」、「アプリケーション/ JSON」)の下に、次のようにイムでのsetHeaderされていない行っていた不正な要求エラー –

+0

@Soniを示しています。 –

答えて

13

私を示しポスターにを投稿しますは、WebサービスURLを引数として取ります。トライキャッチループで

+0

ありがとう、それは私のために働く –

1

は、私がこれをしなかった:

  HttpPost post = new HttpPost(
     "https://www.placeyoururlhere.com"); 
     post.setHeader(HTTP.CONTENT_TYPE,"application/json"); 
     List<NameValuePair> nameValuePairs = new 
     ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("json", json)); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpClient client = new DefaultHttpClient(); 
     HttpResponse resp = client.execute(post); 
     HttpEntity entity = resp.getEntity(); 

     response = EntityUtils.toString(entity); 

あなたが持っているどのように多くの分野に応じて、あなたのnameValurPairsを追加することができます。 は通常、JSONは、私は、それをgzipping送信提案しますこれ、本当に巨大になるかもしれませんが、あなたのJSONはかなり小さく、であれば常に同じサイズは、上記のあなたのために働く必要があります。

1

Restapiの呼び出しではなくWebサービスであれば、サーバーからWSDLファイルを取得し、SOAPスタブジェネレータを使用して、Requestオブジェクトとネットワークコードの作成作業をすべて行うことができます。あなたが自分でそれを行うことを希望する場合はWSClient ++

はその後、物事は少しトリッキー取得します。 AndroidにはSOAPライブラリが付属していません。 しかし、あなたはここでサードパーティのライブラリをダウンロードすることができます:http://code.google.com/p/ksoap2-android/

あなたがそれを使用して支援が必要な場合、あなたはこのスレッドが参考に見つけるかもしれない:How to call a .NET Webservice from Android using KSOAP2?

POSTのようなそのREST-APIの呼び出した場合、またはより具体的にGET非常にシンプルです JSON形式のStringオブジェクトを関数に渡し、org.jsonパッケージを使用してレスポンス文字列を解析します。

これが役に立ちます。

+0

それは私に役立つ素晴らしい投稿 –

関連する問題