[英]URLConnection: unable to make get request
I am trying to access restful resource from Android app using URLConnection, 我正在尝试使用URLConnection从Android应用访问宁静的资源,
public void onClick(View v) {
try {
URL url = new URL("http://192.168.43.45:8080/entity");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0");
InputStream stream = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader bufferedReader = new BufferedReader(reader);
String line ;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
It is throwing this error: 它抛出此错误:
11-10 07:51:33.194 17672-17672/in.co.palup.android D/AndroidRuntime: Shutting down VM
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: FATAL EXCEPTION: main
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: Process: in.co.palup.android, PID: 17672
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: android.os.NetworkOnMainThreadException
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at libcore.io.IoBridge.connect(IoBridge.java:122)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at java.net.Socket.connect(Socket.java:884)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.Connection.connect(Connection.java:152)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at in.co.palup.android.EventCreation$4.onClick(EventCreation.java:203)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.view.View.performClick(View.java:5198)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:21147)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-10 07:51:33.195 17672-17672/in.co.palup.android E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
You will have to use thread for http call, as per below or you can use Asynctask . 您将必须按照以下方式使用线程进行http调用,或者可以使用Asynctask 。
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://192.168.43.45:8080/entity");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0");
InputStream stream = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
It seem duplicate with many topic. 似乎与许多主题重复。 Just research before create question 在提出问题之前进行研究
You can see answer here: How to fix android.os.NetworkOnMainThreadException? 您可以在此处看到答案: 如何修复android.os.NetworkOnMainThreadException?
This exception is thrown when an application attempts to perform a networking operation on its main thread. 当应用程序尝试在其主线程上执行联网操作时,将引发此异常。 Run your code in AsyncTask 在AsyncTask中运行您的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.