2017-06-04 91 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? –