Android 获得;致命异常:AsyncTask“2”;。我不知道';我不知道是什么';是什么原因造成的

Android 获得;致命异常:AsyncTask“2”;。我不知道';我不知道是什么';是什么原因造成的,android,exception,android-asynctask,Android,Exception,Android Asynctask,在尝试调用web服务并获取相应的json对象时,我遇到了一个致命的异常。我完全不知道该去哪里看,也不知道该纠正哪些错误 编辑: 只要查看您的LogCat堆栈跟踪(在本例中),它就会告诉您需要知道的关于此异常是什么以及是什么导致了它: 线程以未捕获异常退出 告诉您已引发代码无法处理的异常 执行doInBackground()时出错 这表明异步任务中的doInBackground()函数引发了此未处理的异常 原因:java.lang.ClassCastException…HttpPost。。。(R

在尝试调用web服务并获取相应的json对象时,我遇到了一个致命的异常。我完全不知道该去哪里看,也不知道该纠正哪些错误

编辑:


只要查看您的LogCat堆栈跟踪(在本例中),它就会告诉您需要知道的关于此异常是什么以及是什么导致了它:

线程以未捕获异常退出

告诉您已引发代码无法处理的异常

执行doInBackground()时出错

这表明异步任务中的doInBackground()函数引发了此未处理的异常

原因:java.lang.ClassCastException…HttpPost。。。(RestClient.java:275)

这表明您遇到了ClassCastException,这是源文件第275行的HttpPost调用导致的

编辑:

应该更仔细地阅读堆栈跟踪。。。正如HandlerExploit所发布的,是HttpPost抛出了这个错误,在这里您需要一个HttpGet。。。但以下调试方法仍然有效:

如果使用e.getMessage()添加额外的catch(ClassCastException e),则很可能会看到一条有用的错误消息,该消息更详细地描述了问题


在这种情况下,当我发现一个意外的异常像这样被抛出时,我倾向于添加一个临时的“catch all”(catch(exception e){e.printStackTrace()}),并在e.printStackTrace()上粘贴一个断点,这样我就可以看到有关异常的所有细节。。。也许这不是最有效的方法,但这是一个开始,当你在黑暗中

我最好的猜测是:

HttpGet req = (HttpGet) params[0];
正在返回一个
HttpPost
,而不是
HttpGet


请发布您正在调用的位置
newcallservicetask().execute()

该问题是一个职业铸造问题。你能在异步任务的
doInBackground
方法中发布代码吗。谢谢,我想你放错代码了。粘贴调用CallServiceTask.excecute(…)的代码;来自RestClient.java。为了帮助我们,我们需要RestClient.java,不管他是否包装它,他仍然会看到完整的stacktrace。
    private JSONObject executeRequest(HttpGet request, String url)
{
    HttpClient client = new DefaultHttpClient();
    JSONObject jsonObj = null;
    client = getNewHttpClient();

    HttpResponse httpResponse;

    try {
        httpResponse = client.execute(request);

        HttpEntity entity = httpResponse.getEntity();

        if (entity != null) {

            InputStream instream = entity.getContent();
            String response = convertStreamToString(instream);
            try {
                jsonObj = new JSONObject(response);
            } catch (JSONException e1) {
                e1.printStackTrace();
            }

            // Closing the input stream will trigger connection release
            instream.close();
        }

    } catch (ClientProtocolException e)  {
        client.getConnectionManager().shutdown();
        e.printStackTrace();
    } catch (IOException e) {
        client.getConnectionManager().shutdown();
        e.printStackTrace();
    }
    return jsonObj;
}
HttpGet req = (HttpGet) params[0];