0

これはサーバーへの POST リクエストです -

public String callServiceTotalRecords(String userName, String password, String email, String type, String start, String end, String userTimeZone, JSONArray ContentClassArr)
    {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(WEBSERVICE + type);

    HttpResponse response = null;

    String responseBody = "";

    try {

        String base64EncodedCredentials = "Basic " + Base64.encodeToString( 
                (userName + ":" + password).getBytes(), 
                Base64.NO_WRAP);


        httppost.setHeader("Authorization", base64EncodedCredentials);

        httppost.setHeader(HTTP.CONTENT_TYPE,"application/json");

        JSONObject obj = new JSONObject();

    obj.put("Start", start); 
    obj.put("End", end);
    obj.put("emailId", email);
    obj.put("userTimeZone", userTimeZone);
    obj.put("ContentClassArr",ContentClassArr.toString());

         httppost.setEntity(new StringEntity(obj.toString(), "UTF-8"));

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

        if (response.getStatusLine().getStatusCode() == 200) 
        {
        responseBody = EntityUtils.toString(response.getEntity());
        Log.d("response ok", "ok response :/");
        } 
        else 
        {
        responseBody = "";
        Log.d("response not ok", "Something went wrong :/");
        }

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    catch (JSONException e) {
        e.printStackTrace();
    }

    return responseBody;
    }              

しかし、応答は404 not foundです。

"response not ok: Something went wrong"

疑問は、次のように形成されたJSONArrayタイプのContentClassArrにあります-

JSONArray ContentClassArr= new JSONArray("[\"UserLog\",\"Sheets\"]");

次に、次のようにJSONObjectに入れています-

obj.put("ContentClassArr",ContentClassArr.toString());

サーバー上の典型的な正しいjsonは-

{"emailId":"usertest@gmail.com","Start":"2014-01-09T12:51:34.110Z","userTimeZone":"America/Los_Angeles","End":"2014-01-16T12:51:34.110Z","ContentClassArr":["UserLog","Sheets"]}

ORエラーを別JSONArray の場所に置くのは正しい方法ですか?JSONObject

4

1 に答える 1

1

obj.put("ContentClassArr",ContentClassArr.toString());

を呼び出すtoString()のではなくJSONArray、そのまま渡すだけです。

obj.put("ContentClassArr", ContentClassArr);

参照: JsonObject の Javadoc

そうは言っても、それはあなたの問題ではありません。POST からのA404は、URL が正しくないことを意味します。ただし、正しい URL を使用すると、JSON が問題になります。

また、大文字の変数名は使用しないでください。命名規則に反し、コードを読みにくくします。クラス名は大文字で、変数は大文字ではありません。

于 2014-01-17T07:16:05.183 に答える