更新:他们已经改变了网站。而不是从nginx给出一个通用的502错误,它现在给出一个即时的403与自定义消息。这使得它不可能重现的问题。
我有一个从Weather.gov获取数据的应用程序。他们正在宕机,我发现HttpURL连接需要几分钟才能返回状态。
String urlString = "https://api.weather.gov/gridpoints/VEF/127,91/forecast";
HttpsURLConnection connection = (HttpsURLConnection) new URL (urlString).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
connection.setReadTimeout (1000);
int responseCode = connection.getResponseCode (); // This doesn't return for a minute or three
字符串
- 如果我在浏览器中打开链接,它会立即返回。
- 如果我把它作为一个桌面程序来做,它也会立即返回。
- 如前所述,在Android Studio Emulator中返回需要几分钟时间。
- 调整超时没有区别。
那么问题是:如何更快地返回响应,以便通知用户有问题。当然,它是在一个线程中,因此我可以显示“Working”状态,但我不需要这样做。如前所述,其他系统会立即返回状态。
注意事项:有人可能很想告诉我使用不同的天气来源。这将是错过了一点。连接问题发生的所有时间,我希望应用程序更好地对他们。
Android Studio Giraffe | 2022.3.1 Patch 1
Build #AI-223.8836.35.2231.10671973, built on August 17, 2023
Runtime version: 17.0.6+0-b2043.56-10027231 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
My desktop JDK is:
openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7-44)
型
1条答案
按热度按时间tv6aics11#
好吧,在看到CommonsWare使用OkHttp得到了很好的结果之后,我会贡献一个URL在一秒钟内(在真实的设备上)使用HttpUrlConnection给出一个IOException。
但是我打开一个输入流并尝试读取。根本不看结果代码。
为什么一个人会看一个结果代码,如果一个人会抓住页面内容..