android - 尝试连接时出现 HttpURLConnection 错误
问题描述
尝试连接到 URL 时出现错误。
相同的代码适用于我作为 Java 控制台应用程序,但是当我尝试在 AsyncTask 中使用 android 应用程序执行此操作时,我得到一个错误。这是我的代码:
public class XMLService extends AsyncTask<Void, Void, Boolean> {
public static String xml;
public static String responseMessage;
public static int responseCode;
static String urlGet = "http://192.168.178.38/data/static.xml";
static String urlPost = "http://192.168.178.38/data/changes.xml";
public static boolean getXML() {
xml = "";
try {
URL url = new URL(urlGet);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String content = "", line;
while ((line = rd.readLine()) != null) {
content += line + "\n";
}
responseCode = connection.getResponseCode();
responseMessage = connection.getResponseMessage();
if (content != "") {
xml = content;
}
Log.d("XML", content);
return true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
@Override
protected Boolean doInBackground(Void... voids) {
Log.d("Starting", "Starting");
return getXML();
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
Log.d("DONE", "DONE");
Log.d("xml: ", xml);
}
}
这是我的例外:
07-04 16:47:14.495 9580-9683/com.example.jonas.heatingcontrol W/System.err: java.net.SocketTimeoutException: timeout
07-04 16:47:14.497 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:218)
07-04 16:47:14.498 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:268)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:222)
07-04 16:47:14.499 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:312)
at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
07-04 16:47:14.500 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:202)
07-04 16:47:14.501 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:241)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:147)
07-04 16:47:14.502 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:786)
07-04 16:47:14.503 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:658)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:488)
07-04 16:47:14.504 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:424)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:257)
07-04 16:47:14.505 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.example.jonas.heatingcontrol.Services.XMLService.getXML(XMLService.java:32)
07-04 16:47:14.506 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.example.jonas.heatingcontrol.Services.XMLService.doInBackground(XMLService.java:109)
at com.example.jonas.heatingcontrol.Services.XMLService.doInBackground(XMLService.java:13)
07-04 16:47:14.507 9580-9683/com.example.jonas.heatingcontrol W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:333)
07-04 16:47:14.508 9580-9683/com.example.jonas.heatingcontrol W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
07-04 16:47:14.509 9580-9683/com.example.jonas.heatingcontrol W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
07-04 16:47:14.510 9580-9683/com.example.jonas.heatingcontrol W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
07-04 16:47:14.513 9580-9683/com.example.jonas.heatingcontrol W/System.err: Caused by: java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:203)
07-04 16:47:14.514 9580-9683/com.example.jonas.heatingcontrol W/System.err: at java.net.SocketInputStream.read(SocketInputStream.java:139)
07-04 16:47:14.515 9580-9683/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.okio.Okio$2.read(Okio.java:142)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:218)
07-04 16:47:14.516 9580-9683/com.example.jonas.heatingcontrol W/System.err: ... 19 more
07-04 16:47:14.517 9580-9580/com.example.jonas.heatingcontrol D/DONE: DONE
07-04 16:49:09.565 9580-9684/com.example.jonas.heatingcontrol W/DpmTcmClient: Couldn't find 'tcm' socket after 120times. quit trying
我用我的手机运行这个应用程序,我可以用它和我的电脑连接到 url。我已经设置了互联网权限。知道有什么问题吗?
编辑:这是我得到的错误,当我删除超时时:
07-04 18:10:45.144 24043-24074/com.example.jonas.heatingcontrol W/System.err: java.io.IOException: unexpected end of stream on com.android.okhttp.Address@a6b09d89
07-04 18:10:45.146 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:256)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:147)
07-04 18:10:45.147 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:786)
07-04 18:10:45.149 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:658)
07-04 18:10:45.150 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:488)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:424)
07-04 18:10:45.151 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:257)
07-04 18:10:45.152 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.example.jonas.heatingcontrol.Services.XMLService.getXML(XMLService.java:33)
at com.example.jonas.heatingcontrol.Services.XMLService.doInBackground(XMLService.java:110)
07-04 18:10:45.153 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.example.jonas.heatingcontrol.Services.XMLService.doInBackground(XMLService.java:13)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
07-04 18:10:45.154 24043-24074/com.example.jonas.heatingcontrol W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
07-04 18:10:45.155 24043-24074/com.example.jonas.heatingcontrol W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
07-04 18:10:45.156 24043-24074/com.example.jonas.heatingcontrol W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
07-04 18:10:45.159 24043-24074/com.example.jonas.heatingcontrol W/System.err: Caused by: java.io.EOFException: \n not found: size=0 content=...
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:206)
07-04 18:10:45.160 24043-24074/com.example.jonas.heatingcontrol W/System.err: at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:241)
... 15 more
07-04 18:10:45.161 24043-24043/com.example.jonas.heatingcontrol D/DONE: DONE
解决方案
推荐阅读
- python - 如何将 2 个功能绑定到一个键以及如何在它们之间交替
- linux - MinGW 交叉编译 Linux->Windows 在任务栏中丢失图标
- r - 在 R 中使用 chartjs 包创建饼图
- asp.net-core - WindowsCryptographicException:密钥集不存在
- mongoose - 如何为对象数组定义猫鼬模式?
- graphics - OpenSceneGraph:绘制半透明对象时不要更新 z 缓冲区
- regex - 从文件名中过滤单词 | 正则表达式
- java - 如果我已经有了泛型的实现,如何声明接口方法
- excel - Excel 索引匹配
- elasticsearch - 在管道 Kibana 中排除“'”