web-dev-qa-db-ja.com

AndroidでHttpClientリクエストを介してJSONオブジェクトを送信する方法は?

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

私のコードはここにあります

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で修正しましたが、ポスターに投稿すると、ステータスがSuccessfull 200 okと表示されます

14
Sachin Gurnani

私はこれをします

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

また、new HttpPost()はWebサービスのURLを引数として受け取ります。

13
curioustechizen

Try catchループで、私はこれを行いました:

         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);

フィールドの数に応じて、nameValurPairを追加できます。通常、JSONは非常に大きくなる可能性があるため、gzipで圧縮して送信することをお勧めしますが、JSONがかなり小さく、常に同じサイズの場合は、上記でうまくいくはずです。

1
Maurice

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

自分でやりたい場合は、少し注意が必要です。 AndroidにはSOAPライブラリが付属していません。ただし、サードパーティのライブラリはこちらからダウンロードできます: http://code.google.com/p/ksoap2-Android /

それを使用する助けが必要な場合は、このスレッドが役立つことがあります: = NETから.NET Webサービスを呼び出す方法Android KSOAP2を使用して?

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

お役に立てれば。