0

我正在制作一个 Android 应用程序,为此我必须从 URL(由一些 python 脚本输出)获取 JSON 内容。

我在 SO 上找到了一种方法,但我无法让它工作。这是代码:

public String webGet(String URL) throws Exception  
{ 
    BufferedReader in = null; 
    try  
    { 
        HttpClient client = new DefaultHttpClient(); 
        client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android"); 

        HttpGet request = new HttpGet();
        request.setHeader("Content-Type", "text/html; charset=utf-8"); 
        request.setURI(new URI(URL)); 

        // Crashes after executing this line
        HttpResponse response = client.execute(request); 

        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

        StringBuffer sb = new StringBuffer(""); 
        String line = ""; 

        String NL = System.getProperty("line.separator"); 
        while ((line = in.readLine()) != null)  
        { 
            sb.append(line + NL); 
        } 
        in.close(); 
        String page = sb.toString();

        //System.out.println(page); 
        return page; 
    }  
    finally  
    { 
        if (in != null)  
        { 
            try  
            { 
                in.close(); 
            }  
            catch (IOException e)     
            { 
                Log.d("BBB", e.toString()); 
            } 
        } 
    } 
}

此崩溃发生在此行之后:

HttpResponse response = client.execute(request);

然后它只是跳转到该finally部分,我可以从异常消息中得到的只是某事是null. 这就是它所说的。

有人知道问题可能是什么吗?


异常说明截图:

在此处输入图像描述

4

2 回答 2

0

您应该尝试捕获异常而不是抛出它,这样您可以获得有关错误的更多信息。

try {

} catch (ExceptionType name) {

} catch (ExceptionType name) {

}

http://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html

于 2012-07-18T12:49:25.033 回答
0

在某些 Android 版本中,您无法从“主”线程执行网络操作。这是为了确保您的应用程序仍然能够响应最终用户,即使它执行了一些需要很长时间的阻塞网络操作。

您需要在另一个线程中执行该操作。

无法在 Android 中连接到 FTP

于 2012-07-18T12:58:39.123 回答