2017-06-04 92 views
0

我在Thread或AsyncTask中创建了HttpURLConnection,它工作正常。 但是,当设备处于睡眠模式时,(显示屏关闭...),然后通过打开连接 - >java.net.ConnectException: Connection refused获得 例外。通过mobild数据抛出URL openConnection抛出设备睡眠时出现ConnectException

我的想法是用PowerManager.PARTIAL_WAKE_LOCK唤醒设备,但这没有帮助。

另一个从PowerManager定义的例如ACQUIRE_CAUSES_WAKEUP已被弃用。

我能做些什么来创建成功的连接?

代码:

URL url = new URL("myUrl..."); 
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); 
urlConnection.connect(); 
int response = urlConnection.getResponseCode(); 
if (response == HttpURLConnection.HTTP_OK) { 
    // to do some work 
} 
+0

你应该考虑告诉我们你真正想要达到什么。代码片段不足以猜测。顺便说一句,“显示关闭”和“睡眠模式”并不完全相同。很多东西都可以由用户配置,您需要考虑(例如,在睡眠模式下放置WiFi)。请编辑您的问题并告诉我们:为什么在设备睡眠时需要连接?在设备醒来时有没有机会建立连接,但应该在睡着时使用?您提取多少数据以及多久?你对服务有什么了解? –

+0

我认为你的问题看起来好多了,只需要一点点改进(https://meta.stackoverflow.com/a/291370/1783163)。看,我编辑后的效果如何。你也可以做到这一点。 – peterh

+0

当我的智能手机的位置发生变化(每〜4分钟)时,我只想要一个简单的http GET和POST请求到服务器。 请求数据少于100个字节。 当人机界面打开时,它工作正常。 显示屏关闭后,连接无法打开。 我知道服务。 –

回答

0

我建议你使用OkHttp。它比HttpClient好。

+0

在哪里使用我HttpClient? –