8

私はLoopJAndroidAsyncHttpライブラリを使用してPhPサーバーと通信していました。そして、私は問題を抱えました。

次のようなJsonObjectを送信する必要があります。

{      "data": 2376845,      
       "data2": 12545,      
       "array": [{"data3": "2013-01-10",          
                     "data4": 23532        },       
                    {"data3": "2013-01-11",             
                     "data4": 523526   }]
}

しかし、javadocでは; 唯一のパラメーターはRequestParamsであり、配列はありません。誰かが私を助けることができますか?または私が使用できるものを見せてください。ありがとう。

4

2 に答える 2

23

使用する

public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler)

それ以外の:

public void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler)

JSONを文字列として解析します。

ByteArrayEntity entity = new ByteArrayEntity(bodyAsJson.getBytes("UTF-8"));
client.post(context, newUrl, entity, "application/json", responseHandler);

ここで、clientはAsyncHttpClientであり、bodyAsJsonは文字列内のJSONです。

yourJsonObj.toString()
于 2013-01-10T17:59:14.760 に答える
1

javax.json-1.0.2.jarで使用可能なJsonObjectクラスを使用して、上記のjson形式を構築できます。

JsonObject jo = Json.createObjectBuilder()
            .add("data", 2376845)
            .add("data2", 12545)
            .add("array",Json.createArrayBuilder()
                    .add(Json.createObjectBuilder().add("data3", "2013-01-10").add("data4", 23532).build())
                    .add(Json.createObjectBuilder().add("data3", "2013-01-11").add("data4", 523526).build()))
                    .build();

json形式を構築した後

        AsyncHttpClient client=new AsyncHttpClient();
        Request request = client.preparePost(your host URL).
        setHeader("Content-Type","application/json").
        setHeader("Content-Length", ""+jo.toString().length()).setHeader("Authorization","Basic fgfgfgfhfhtetet=").
        setBody(jo.toString()).build();
        ListenableFuture<Response> r = null;
        //ListenableFuture<Integer> f= null;
        try{
        r = client.executeRequest(request);
        System.out.println(r.get().getResponseBody());
        }catch(IOException e){

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

基本認証が必要な場合は、base64でエンコードされたusername:passwordの組み合わせであるキーをヘッダーに追加する必要があります。この場合、それを残さない場合は、ヘッダーに追加しました

ほとんどこれはあなたのために働くでしょう

注:AsyncHttpClient、ListenableFutureクラスはasync-http-client-1.7.5.jarで利用できます

于 2014-07-18T13:25:47.330 に答える