【问题标题】:Android Getting JSON return error from POST Http executionAndroid从POST Http执行中获取JSON返回错误
【发布时间】:2012-02-17 21:13:21
【问题描述】:

我目前正在尝试通过 POST 将数据发送到服务器,而服务器正在处理数据并将其附加到 JSON 文件中。我目前收到 422 错误,并且我已经收到了一段时间。我的问题是:我如何在 Java 中接收 JSON 错误本身,以便我可以看到错误是什么。我所看到的只是一个 HttpResponseException,它没有给我任何其他东西。感谢您的时间和提前帮助。

        HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(mPath);
        // Add your data
    try
    {
        List nameValuePairs = new ArrayList(4);
        httppost.setHeader("Authorization", Base64.encodeToString(new StringBuilder(bundleId).append(":").append(apiKey).toString().getBytes("UTF-8"), Base64.URL_SAFE|Base64.NO_WRAP));
        nameValuePairs.add(new BasicNameValuePair("state", "CA"));
        nameValuePairs.add(new BasicNameValuePair("city", "AndDev is Cool!"));
        nameValuePairs.add(new BasicNameValuePair("body", "dsads is assrawstjljalsdfljasldflkasjdfjasldjflasjdflkjaslfggddsfgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfdsgfddjflaskjdfkasjdlfkjasldfkjalskdjfajasldfkasdlfjasljdflajsdfjasdjflaskjdflaksjdfljasldfkjasljdflajsasdlfkjasldfkjlas!"));
        nameValuePairs.add(new BasicNameValuePair("title", "dsaghhhe fd!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        //HttpResponse response = httpclient.execute(httppost);
        //int status = response.getStatusLine().getStatusCode();
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);
        Log.v(TAG, "response: " + responseBody);
        //JSONObject response = new JSONObject(responseBody); 
        int f = 0;
    }
    catch(HttpResponseException e)
    {
        Log.e(TAG, e.getLocalizedMessage());
        Log.e(TAG, e.getMessage());
        e.printStackTrace();
    }

【问题讨论】:

  • 您是否尝试过使用类似hurl.it 的方式来检查您在服务器上收到的消息? curl 也足够了。
  • 哇哦。这真的有助于调试它!已收藏!谢谢!

标签: android json http exception post


【解决方案1】:

您可以使用如下预定义的 Json 类更方便地发送您的参数:

    String jsonParam = null;
    try{
        JSONObject param = new JSONObject();
        param.put("state", "CA");
        param.put("city", "AndDev is Cool!");
        //and so on with other parameters

        jsonParam = param.toString();
    }
    catch (Exception e) {
        // TODO: handle exception
    }

并将帖子实体设置为:

if(jsonParam != null)
     httppost.setEntity(new StringEntity(jsonParam, HTTP.UTF_8));

【讨论】:

    【解决方案2】:

    422 错误说:Unprocessable Entity - The request was well-formed but was unable to be followed due to semantic errors

    UrlEncodedFormEntity 有问题

    【讨论】:

    • 是的,我假设这是我的结构的问题,因为我重新评估了它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多