
我一直在研究一个Android项目,我想要一些API来获取信息.看起来这应该是非常基本的!
这是我的代码的一般要点:
private inputStream retrIEveStream2(String url){ DefaulthttpClIEnt clIEnt = new DefaulthttpClIEnt(); httpGet getRequest = new httpGet(url); System.out.println("getRequest == " + getRequest); try { httpResponse getResponse = clIEnt.execute(getRequest);//here is teh problem final int statusCode = getResponse.getStatusline().getStatusCode(); if (statusCode != httpStatus.SC_OK) { Log.w(getClass().getSimplename(), "Error " + statusCode + " for URL " + url); return null; } httpentity getResponseEntity = getResponse.getEntity(); return getResponseEntity.getContent(); } catch (Exception e) { getRequest.abort(); Log.w(getClass().getSimplename(), "Error for URL, YO " + url, e); } return null;}其中url变量是字符串“http://search.twitter.com/search.Json?q=javacodegeeks”.
正如您所看到的,该站点有一些不错的JsON信息;我的问题是,每次调用’clIEnt.execute(getRequest);”时,程序都会抛出并捕获异常.没用处!
我听说过两件事:
1)您必须为模拟器/设备设置使用互联网的权限!
– 我想我已经覆盖了这个,但也许我做错了!
在我添加的androIDmanifest.xml中
< uses-permission androID:name="androID.permission.INTERNET" >< /uses-permission>就是这样.
2)(我不太确定)你不能在’ui’线程中启动’网络’线程.我不完全确定这意味着什么,但我继续前进并遵循AndroID Threads,Handlers和AsyncTasks的一些教程.这里:请查看我遵循的AsyncTask教程下的代码:
http://www.vogella.de/articles/AndroidPerformance/article.html
继AsyncTask教程之后,我发现我仍然遇到同样的问题 –
这条线:
httpGet httpGet = new httpGet(url)
像往常一样抛出异常.
这是我尝试上面的线程教程的logcat:
02-27 20:43:28.565: I/ActivityManager(92): START {cmp=com.Prometheus.R1/.JsonParsingActivity} from pID 57402-27 20:43:28.565: W/WindowManager(92): Failure taking screenshot for (180x300) to layer 2101002-27 20:43:28.896: I/System.out(574): pre execute02-27 20:43:29.236: I/ActivityManager(92): displayed com.Prometheus.R1/.JsonParsingActivity: +638ms02-27 20:43:29.329: I/ARMAssembler(35): generated scanline__00000077:03010104_00008001_00000000 [ 89 ipp] (110 ins) at [0x40fad6a8:0x40fad860] in 7204915 ns02-27 20:43:30.016: W/System.err(574): java.net.UnkNownHostException: Unable to resolve host "search.twitter.com": No address associated with hostname02-27 20:43:30.016: W/System.err(574): at java.net.InetAddress.lookupHostByname(InetAddress.java:426)02-27 20:43:30.026: W/System.err(574): at java.net.InetAddress.getAllBynameImpl(InetAddress.java:242)02-27 20:43:30.026: W/System.err(574): at java.net.InetAddress.getAllByname(InetAddress.java:220)02-27 20:43:30.026: W/System.err(574): at org.apache.http.impl.conn.DefaultClIEntConnectionoperator.openConnection(DefaultClIEntConnectionoperator.java:137)02-27 20:43:30.036: W/System.err(574): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)02-27 20:43:30.036: W/System.err(574): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)02-27 20:43:30.046: W/System.err(574): at org.apache.http.impl.clIEnt.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)02-27 20:43:30.046: W/System.err(574): at org.apache.http.impl.clIEnt.AbstracthttpClIEnt.execute(AbstracthttpClIEnt.java:555)02-27 20:43:30.046: W/System.err(574): at org.apache.http.impl.clIEnt.AbstracthttpClIEnt.execute(AbstracthttpClIEnt.java:487)02-27 20:43:30.055: W/System.err(574): at org.apache.http.impl.clIEnt.AbstracthttpClIEnt.execute(AbstracthttpClIEnt.java:465)02-27 20:43:30.055: W/System.err(574): at com.Prometheus.R1.JsonParsingActivity$DownloaDWebPageTask.doInBackground(JsonParsingActivity.java:88)02-27 20:43:30.055: W/System.err(574): at com.Prometheus.R1.JsonParsingActivity$DownloaDWebPageTask.doInBackground(JsonParsingActivity.java:1)02-27 20:43:30.055: W/System.err(574): at androID.os.AsyncTask.call(AsyncTask.java:264)<br/>02-27 20:43:30.066: W/System.err(574): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)02-27 20:43:30.066: W/System.err(574): at java.util.concurrent.FutureTask.run(FutureTask.java:137)<br/>02-27 20:43:30.066: W/System.err(574): at androID.os.AsyncTask$SerialExecutor.run(AsyncTask.java:208)02-27 20:43:30.076: W/System.err(574): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)02-27 20:43:30.076: W/System.err(574): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)02-27 20:43:30.087: W/System.err(574): at java.lang.Thread.run(Thread.java:856)02-27 20:43:30.108: W/System.err(574): Caused by: libcore.io.GaIException: getaddrinfo Failed: EAI_NODATA (No address associated with hostname)02-27 20:43:30.116: W/System.err(574): at libcore.io.Posix.getaddrinfo(Native Method)02-27 20:43:30.116: W/System.err(574): at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:55)02-27 20:43:30.126: W/System.err(574): at java.net.InetAddress.lookupHostByname(InetAddress.java:411)02-27 20:43:30.126: W/System.err(574): ... 18 more02-27 20:43:30.136: I/System.out(574): Except thrown by url http://search.twitter.com/search.Json?q=javacodegeeks, .... 02-27 20:43:30.136: I/System.out(574): response =您可以看到异常是UnkNownHostException:
“ava.net.UnkNownHostException:无法解析主机”search.twitter.com“:没有与主机名关联的地址”
但我不认为该网站是不可接受的……
任何人都可以告诉我,我需要做些什么才能通过它?
解决方法:
检查清单的权限,确保添加了以下内容:
<uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE"/><uses-permission androID:name="androID.permission.ACCESS_WIFI_STATE"/><uses-permission androID:name="androID.permission.INTERNET"/> 总结 以上是内存溢出为你收集整理的java – 使用android问题的HttpResponse:执行总是导致异常?全部内容,希望文章能够帮你解决java – 使用android问题的HttpResponse:执行总是导致异常?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)