在Android中解析JSON数据时,响应将转到onFailure方法

时间:2015-10-17 06:56:21

标签: android json parsing loopj

我正在使用Loopj库解析我的android应用程序中的json数据,但每次响应都在onFailure上。

  

W / JsonHttpRH:onFailure(int,Header [],String,Throwable)不是   覆盖,但收到回调W / JsonHttpRH:   org.apache.http.client.HttpResponseException:方法不允许   W / JsonHttpRH:at   com.loopj.android.http.AsyncHttpResponseHandler.sendResponseMessage(AsyncHttpResponseHandler.java:466)   W / JsonHttpRH:at   com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:160)   W / JsonHttpRH:at   com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)   W / JsonHttpRH:at   com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)   W / JsonHttpRH:at   java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:442)   W / JsonHttpRH:at   java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)   W / JsonHttpRH:at   java.util.concurrent.FutureTask.run(FutureTask.java:137)   W / JsonHttpRH:at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)   W / JsonHttpRH:at   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)   W / JsonHttpRH:在java.lang.Thread.run(Thread.java:856)E / CT:     E / CT:E / CT:E / CT:E / CT:
  服务

3 个答案:

答案 0 :(得分:0)

我认为问题出在您的网址中 放一个' /'在URL的末尾会导致重定向发生,因为您的服务器喜欢以' /'结尾的网址。服务器重定向到您的URL完全支持POST,但客户端在根据您的setRedirecting()调用行为时执行GET请求(cURL与-L开关完全相同)修复是放置a' /'在URL的末尾,或者自己从响应中获取Location标头,然后手动启动另一个POST请求。

这可以在wireshark中观察到。您可以尝试使用浏览器对URL执行GET请求并附加斜杠来测试该理论。这将导致浏览器获得405.这是Android的固定代码,此代码使用附加' /'的简单修复程序。到URL(不准备生产):

您忘记允许您的应用访问清单中的互联网。至于与我的代码回调不匹配的文档,版本可能不匹配,因为我的android async 1.4.3 jar的源代码中的签名与我的覆盖是一致的。

答案 1 :(得分:0)

首先检查json数据,即即将到来的数据是jsonArray格式还是只有数组类型。使用此方法解析json数据

private void parseJSON() {

    try {
        JSONObject josn = new JSONObject(GetCar);

                    JSONArray array = json.getJSONArray("Company");

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

答案 2 :(得分:0)

location / {

    rewrite ^/my_dir/filename.php?parameter=(.*)/$ /my_dir/$1/ permanent;
}

您正尝试使用服务器端不允许的方法(POST,PUT)进行HTTP调用。