【问题标题】:HttpClient wont work in jelly bean?HttpClient 在果冻豆中不起作用?
【发布时间】:2014-03-04 15:22:01
【问题描述】:

我已经构建了应用程序 android 使用 http 客户端从 URL 获取内容,

         String getRequest(String SUrl){
             String vResult = "TEST";
        //SUrl result of "http://mydomain.com/file.php?var=21"
            HttpClient client = new DefaultHttpClient();
            HttpGet request;            
            try{                
                request=new HttpGet(SUrl);
                HttpResponse response = client.execute(request);


                vResult=request(response);

            }catch(Exception ex){
                Log.e("From Server", ex.getMessage());

            }
            return vResult;
        }

        public static String request(HttpResponse response){
            String result = "";
            try{
                InputStream in = response.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                StringBuilder str = new StringBuilder();
                String line = null;
                while((line = reader.readLine()) != null){
                    str.append(line + "\n");
                }
                in.close();
                result = str.toString();
            }catch(Exception ex){
                result = "Error";
            }
            return result;
        }

在 android 姜饼中,上面的代码可以很好地从服务器获取内容,但在 jelly bean 中,代码结果日志是这样的

java.lang.NullPointerException: println needs a message

即使我已经声明了所有变量,为什么我在果冻豆中得到空值?

谢谢

【问题讨论】:

  • 如果ex.getMessage()Log.e("From Server", ex.getMessage()); 返回空值且具有上述NPE,则无论Android 版本如何,您的应用都会失败。
  • 改成这样:Log.e("From Server", ex.getMessage()+"");
  • @ltvie 我相信你尝试在 UI 线程中请求网络并得到 NetworkOnMainThreadException,这是 HONEYCOMB 禁止的(api 级别 11)。
  • 感谢您的快速响应。我的问题解决了。我想再问一遍,为什么 getMessage() 会导致我的应用程序在 Jelly bean 中出错?
  • 请记住getMessage() 不是根本原因异常。有时,exception.getMessage() 返回null。但是您的问题是主线程上的请求网络,这导致了NetworkOnMainThreadException(没有消息),正如我猜想的那样。

标签: java android httpclient


【解决方案1】:

试试这个..

       catch(Exception ex){
            Log.e("From Server", ""+ex.printStackTrace());

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2012-11-10
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多