Java HttpClient在jelly bean中无法工作?
我已经构建了android应用程序,它使用http客户端从URL获取内容Java HttpClient在jelly bean中无法工作?,java,android,httpclient,Java,Android,Httpclient,我已经构建了android应用程序,它使用http客户端从URL获取内容 String getRequest(String SUrl){ String vResult = "TEST"; //SUrl result of "http://mydomain.com/file.php?var=21" HttpClient client = new DefaultHttpClient(); Ht
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 gingerbread中,上面的代码可以很好地从服务器获取内容,但在jelly bean中,代码结果日志如下
java.lang.NullPointerException: println needs a message
为什么我在jelly bean中得到null,即使我已经声明了所有变量
谢谢,试试这个
catch(Exception ex){
Log.e("From Server", ""+ex.printStackTrace());
}
如果
ex.getMessage()
在Log.e(“从服务器”,ex.getMessage())处返回null,则无论Android版本如何,您的应用程序都将失败使用上面的NPE编写代码>。将其更改为:Log.e(“来自服务器”,例如getMessage()+)@ltvie我相信您尝试在UI线程中请求网络,并获得了NetworkOnMainThreadException
,这是蜂窝(api级别11)禁止的。感谢您的快速响应。我的问题是解决。。我想再问一次,为什么getMessage()会导致我的应用程序在Jelly bean中出错?请记住getMessage()
不是根本原因异常。有时,exception.getMessage()
返回null
。但您的问题是主线程上的请求网络,正如我猜的那样,它导致了NetworkOnMainThreadException
(没有消息)。