Java 正在尝试使用android应用程序检查端口可用性
我试图检查是否可以通过android应用程序访问web服务 在我的按钮中,单击侦听器是:Java 正在尝试使用android应用程序检查端口可用性,java,android,network-programming,inet,Java,Android,Network Programming,Inet,我试图检查是否可以通过android应用程序访问web服务 在我的按钮中,单击侦听器是: try { InetAddress address = InetAddress.getByName(result); // user input is 'result' (a URL) LINE 73 boolean b = address.isReachable(3000); String str = String.val
try {
InetAddress address = InetAddress.getByName(result); // user input is 'result' (a URL) LINE 73
boolean b = address.isReachable(3000);
String str = String.valueOf(b); // turning the value of the boolean into string
pingResult.setText(str); // value displays as true or false
}
catch (UnknownHostException e) {} // will fill with helpful message later
catch (IOException e) {}
Logcat正在显示:
05-10 15:21:21.390: E/AndroidRuntime(11653): FATAL EXCEPTION: main
05-10 15:21:21.390: E/AndroidRuntime(11653): Process: com.example.c3po, PID: 11653
05-10 15:21:21.390: E/AndroidRuntime(11653): android.os.NetworkOnMainThreadException
05-10 15:21:21.390: E/AndroidRuntime(11653): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
05-10 15:21:21.390: E/AndroidRuntime(11653): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-10 15:21:21.390: E/AndroidRuntime(11653): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-10 15:21:21.390: E/AndroidRuntime(11653): at java.net.InetAddress.getByName(InetAddress.java:289)
05-10 15:21:21.390: E/AndroidRuntime(11653): at com.example.c3po.MainActivity$2.onClick(MainActivity.java:73)
此外,第73行已被注释
你知道我哪里出错了吗
谢谢您在主线程上遇到网络异常。在主线程(即您的UI线程)上使用任何类型的阻塞(或网络活动)都不是一个好的做法 可能的解决办法: 1.单击按钮“生成线程”,在该线程中执行您尝试执行的网络活动。() 2.这种解决方案是不可取的。但是,您仍然可以将清单设置为允许主线程上的网络活动,Google可以为您提供清单命令
您可以在NetworkOnMainThreadException上搜索以了解更多信息。堆栈跟踪准确地告诉您做错了什么,您正在UI线程上运行网络操作。只需将其移动到线程或异步任务,它就会工作