java.net.SocketTimeoutException: 连接失败
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/16551509/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.net.SocketTimeoutException: failed to connect
提问by Victor
I hava a working xmlparser
But unfortunately i get an error when i'm on mobile data.
The problem doesn't occur on Wi-Fi and the page is available at any time.
What do i do wrong?
I've the permission for Internet.
我有一个工作xmlparser
但不幸的是,当我使用移动数据时出现错误。
在 Wi-Fi 上不会出现该问题,并且该页面随时可用。
我做错了什么?
我有上网权限。
Stack trace:
堆栈跟踪:
05-14 21:26:35.628: W/System.err(17691): java.net.SocketTimeoutException: failed to connect to buie.vlsolutions.nl/185.10.98.4 (port 80) after 15000ms
05-14 21:26:35.633: W/System.err(17691): at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
05-14 21:26:35.633: W/System.err(17691): at libcore.io.IoBridge.connect(IoBridge.java:112)
05-14 21:26:35.633: W/System.err(17691): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
05-14 21:26:35.633: W/System.err(17691): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
05-14 21:26:35.633: W/System.err(17691): at java.net.Socket.connect(Socket.java:842)
05-14 21:26:35.633: W/System.err(17691): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
05-14 21:26:35.638: W/System.err(17691): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
05-14 21:26:35.638: W/System.err(17691): at nl.vlsolutions.buienl.MainActivity.downloadUrl(MainActivity.java:475)
05-14 21:26:35.638: W/System.err(17691): at nl.vlsolutions.buienl.MainActivity.loadXmlFromNetwork(MainActivity.java:342)
05-14 21:26:35.638: W/System.err(17691): at nl.vlsolutions.buienl.MainActivity.access(MainActivity.java:334)
05-14 21:26:35.643: W/System.err(17691): at nl.vlsolutions.buienl.MainActivity$DownloadXmlTask.doInBackground(MainActivity.java:307)
05-14 21:26:35.643: W/System.err(17691): at nl.vlsolutions.buienl.MainActivity$DownloadXmlTask.doInBackground(MainActivity.java:1)
05-14 21:26:35.643: W/System.err(17691): at android.os.AsyncTask.call(AsyncTask.java:287)
05-14 21:26:35.643: W/System.err(17691): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-14 21:26:35.643: W/System.err(17691): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-14 21:26:35.643: W/System.err(17691): at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:230)
05-14 21:26:35.643: W/System.err(17691): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-14 21:26:35.643: W/System.err(17691): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-14 21:26:35.648: W/System.err(17691): at java.lang.Thread.run(Thread.java:856)
Function downloadUrl:
函数下载地址:
private InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect(); // Line 475
return conn.getInputStream();
}
回答by Victor
It turns out there was an problem with the DNS Server from my data provider. Because my server just changed IP-addresses and the DNS Server was not yet updated.
结果发现我的数据提供商的 DNS 服务器有问题。因为我的服务器刚刚更改了 IP 地址,而 DNS 服务器尚未更新。
回答by Victor
Have you tried to increase the connection time out? maybe your mobile data connection is too slow in contrary to your wifi. use try and catch and post the exception here, I think it'll be more helpful than the logcat in this case.
您是否尝试过增加连接超时?也许您的移动数据连接速度太慢,与您的 wifi 不同。在这里使用 try 和 catch 并发布异常,我认为在这种情况下它会比 logcat 更有帮助。