【发布时间】:2012-04-20 15:22:13
【问题描述】:
我厌倦了 oracle 的例子,用 android 从 URLConnection 中读取 这是代码
``try{
URL oracle = new URL("http://www.oracle.com/");
Proxy proxy = new Proxy(Proxy.Type.HTTP,newInetSocketAddress("192.168.3.254",3128)); // or whatever your proxy is
URLConnection yc = oracle.openConnection(proxy);
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
Toast.makeText(this, inputLine, Toast.LENGTH_SHORT);
in.close();
}
catch(IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
我注意到我的代理模拟器设置已配置 我有这个日志错误
>04-20 14:20:21.842: D/AndroidRuntime(988): 关闭 VM 04-20 14:20:21.842: W/dalvikvm(988): threadid=1: 线程以未捕获的异常退出 (group=0x409c01f8) 04-20 14:20:21.862:E/AndroidRuntime(988):致命异常:主要 04-20 14:20:21.862: E/AndroidRuntime(988): java.lang.RuntimeException: 无法启动活动 ComponentInfo{connect.oracle.java/connect.oracle.java.ConnectActivity}: android.os.NetworkOnMainThreadException 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread.access$600(ActivityThread.java:123) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.os.Handler.dispatchMessage(Handler.java:99) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.os.Looper.loop(Looper.java:137) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 java.lang.reflect.Method.invoke(Method.java:511) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-20 14:20:21.862: E/AndroidRuntime(988): at dalvik.system.NativeStart.main(Native Method) 04-20 14:20:21.862: E/AndroidRuntime(988): 由: android.os.NetworkOnMainThreadException 引起 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 java.net.InetAddress.getHostByAddrImpl(InetAddress.java:440) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 java.net.InetAddress.getHostName(InetAddress.java:313) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 java.net.InetSocketAddress.getHostName(InetSocketAddress.java:156) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpConnection$Address.(HttpConnection.java:322) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpConnection.connect(HttpConnection.java:96) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpEngine.connect(HttpEngine.java:303) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 connect.oracle.java.ConnectActivity.onCreate(ConnectActivity.java:22) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.Activity.performCreate(Activity.java:4465) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 04-20 14:20:21.862: E/AndroidRuntime(988): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-20 14:20:21.862: E/AndroidRuntime(988): ... 11 更多
提前谢谢你
【问题讨论】:
-
你的代码如何编译?你不能在没有赋值的情况下声明像 inputLine 这样的局部变量。
标签: java android urlconnection