我一定要做一些愚蠢的事情,但我无法解决它的问题......
我的代码段
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://somehost/WS2/Upload.aspx?one=valueGoesHere");
client.execute(request);//it fails at this line
} catch (Exception e) {
在我的清单中我有互联网访问权限
来自控制台
W/System.err( 4210): java.net.UnknownHostException: somehost
W/System.err( 4210): at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
W/System.err( 4210): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
W/System.err( 4210): at java.net.InetAddress.getAllByName(InetAddress.java:242)
W/System.err( 4210): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
W/System.err( 4210): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
W/System.err( 4210): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
W/System.err( 4210): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
W/System.err( 4210): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err( 4210): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err( 4210): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err( 4210): at com.temp.services.httpclient.HttpGetDemo.onCreate(HttpGetDemo.java:29)
W/System.err( 4210): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
W/System.err( 4210): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
W/System.err( 4210): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
W/System.err( 4210): at android.app.ActivityThread.access$2300(ActivityThread.java:135)
W/System.err( 4210): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
W/System.err( 4210): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 4210): at android.os.Looper.loop(Looper.java:144)
W/System.err( 4210): at android.app.ActivityThread.main(ActivityThread.java:4937)
W/System.err( 4210): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 4210): at java.lang.reflect.Method.invoke(Method.java:521)
W/System.err( 4210): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
W/System.err( 4210): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
W/System.err( 4210): at dalvik.system.NativeStart.main(Native Method)
I/ActivityManager( 120): Displayed activity com.temp.services/.httpclient.HttpGetDemo: 119 ms (total 304 ms)
答案 0 :(得分:4)
尝试在http请求代码
之前添加以下内容StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
答案 1 :(得分:1)
不要忘记在 Android清单中声明 INTERNET权限:
<uses-permission android:name="android.permission.INTERNET"/>
答案 2 :(得分:1)
你应该确保你的主线程没有运行,检查你是否得到这个例外: android.os.NetworkOnMainThreadException
答案 3 :(得分:0)
您是在模拟器中还是在Android设备上执行此请求? 如果它在模拟器上,可能没有与它共享互联网连接。
如果它在Android设备上,似乎你没有互联网访问权限(不是权限,只是访问权限)
答案 4 :(得分:0)
假设网址是有效网址,我建议您致电:
try {
InetAddress address = InetAddress.getByName(url);
} catch (UnknownHostException e) {
e.printStackTrace();
}
这是DNS pre-fetching,以便您的设备可以将其解析为IP地址。
虽然这还不足以保证工作。实际上对我有用的是重试机制。给它一些好的老款F5 F5 F5 F5,直到网站回复:D
答案 5 :(得分:0)
问题在于URL。如日志异常中所示
java.net.UnknownHostException: somehost
尝试使用您的真实网址。
&安培; BTW www.google.com正常运作
答案 6 :(得分:0)
好的,尝试这个怎么样:
URL uri = new URL(rootUri);
HttpURLConnection connection = (HttpURLConnection) uri.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.connect();