2

私は現在、投稿リクエストを送信し、サーバーから json オブジェクトを取得する必要があるプロジェクトに取り組んでいます。前に、Get メソッドを使用して json オブジェクトにアクセスしました。うまくいきました。しかし、いくつかのサーバーの変更により、post メソッドに移行する必要がありました。その後、「get」メソッドから以前に取得したjsonオブジェクトが返されません。解決策を考え出すために最善を尽くしましたが、できませんでした。この問題を解決するために誰かが私を助けてくれれば、非常に感謝しています。

private AdSniperAdObjectResponse postData(String url) {
    //Bundle b = new Bundle();
    HttpClient httpClient = HttpClientFactory.getThreadSafeClient();
    //Log.d(TAG, "url: " + url);
    try {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("Content-Type", "application/json");
        httpPost.setHeader("Accept", "JSON");


        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
        nameValuePairs.add(new BasicNameValuePair("latitude", "-33.8736"));
        nameValuePairs.add(new BasicNameValuePair("longitude", "151.207"));
        nameValuePairs.add(new BasicNameValuePair("age", "35"));
        nameValuePairs.add(new BasicNameValuePair("gender", "All"));

        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity resEntity = httpResponse.getEntity();
        if (resEntity != null) {
            String resp = EntityUtils.toString(resEntity);

上記は私が使用するコードです。以前は HttpGet クラスを使用しました。HttpPost の場合、'resp' 変数は常に null です。私が何を間違えたのかわからない。

4

4 に答える 4

1

こんなはずじゃないの

HttpResponse httpResponse = httpClient.execute(httpPost);

        if (httpResponse  != null) {
            String resp = httpResponse.toString();

サーバーがJSONStringを返す場合..

say JSONObject data = new JSONObject(resp);

そして値を取得します..

于 2012-04-25T06:58:21.780 に答える
0

を取得する前に、を取得して、ステータスコードが期待どおりであることを確認するHttpEntity必要があります。StatusLine本当の問題は、サーバーが何らかのエラー応答を送信していることだと思います。また、「Accept」ヘッダーを使用してJSON応答を要求したため、サーバーが応答本文で診断を送信していない可能性があります...したがって、空です。

于 2012-04-25T07:18:26.160 に答える
0

みんな私は解決策を見つけました。次の2行をコメントするとうまくいきました。

httpPost.setHeader("Content-Type", "application/json");
    httpPost.setHeader("Accept", "JSON");

皆さんの回答に感謝します。高く評価します。

于 2012-04-26T04:43:23.113 に答える
0
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof  (List<NameValuePair> ));

これを試して、これを使用してデータを渡します

jsonSerializer.WriteObject(reqStream, nameValuePairs );
                reqStream.Close();

あなたが得ているものは何でも、再び応答を逆シリアル化します

于 2012-04-25T07:06:47.860 に答える