2012-04-20 93 views
2

我有一個相當簡單的問題。HTTPWebRequest喚醒WIFI?

我們使用BackgroundAgents(Periodic agents)執行一些後臺任務,這些任務需要WiFi(互聯網)連接才能執行HttpWebRequest。正如在第二個參考中提到的HttpWebRequest被支持,但問題是,如果Windows Phone被鎖定或閒置超過1分鐘,WiFi被禁用。

我已經基於兩個重要的問題是什麼我已閱讀並嘗試,直到知道:

  1. 微軟是否能夠定期按照預定的時間間隔來檢查新郵件或其他通知的WiFi?如果答案是肯定的,我的後臺代理會在這段時間內重新安排並運行嗎?
  2. 直到知道我發現,如果被鎖定的HttpWebRequest不喚醒手機,或在閒置超過1分鐘。是這樣嗎?很多人聲明,如果手機被鎖定或者1分鐘過去了,HttpWebRequest可以正常工作。我無法做到這一點。

謝謝。

示例代碼:

protected override void OnInvoke(ScheduledTask task) 
    {    
     ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(120)); 

     MakeHttpRequest("test"); 
    } 
private void MakeHttpRequest(string position) 
    { 
     if (position != null) 
     { 
      var request = (HttpWebRequest)WebRequest.Create(
      new Uri("http://mydomain.com/Testing/Details/"+position)); 
      request.BeginGetResponse(r => 
      { 
       var httpRequest = (HttpWebRequest)r.AsyncState; 
       var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r); 

       using (var reader = new StreamReader(httpResponse.GetResponseStream())) 
       { 
        var response = reader.ReadToEnd(); 

        Deployment.Current.Dispatcher.BeginInvoke(new Action(() => 
        { 
        })); 
       } 
      }, request); 
     } 
     this.NotifyComplete(); 
    } 

PS:請記住,當我運行這段代碼,而應用程序是使用USB電纜都連接到計算機上運行良好。這就是爲什麼我相信它的後臺工作人員不能喚醒手機+ WiFi以執行HttpWebRequest的問題。

+0

請出示一些源代碼...你嘗試過什麼? – Yahia 2012-04-20 18:18:28

+0

謝謝@Yahia。添加了源代碼! – glarkou 2012-04-20 18:23:24

+0

您正在使用哪個BackgroundAgent類? – 2012-04-20 18:29:44

回答

1

這是我用手機上了一天到一天的基礎上的Windows Phone不會重新啓用wifi的經驗鎖定,除非手機插上充電後。它還允許在禁用wifi之前已經開始完成的數據傳輸。

然而,即使手機試圖重新定期,一些無線網絡提供商重定向到認證頁面進行認證每個用戶重新連接時間和Windows Phone不處理這種情況。

在現實中,也不能保證您的可用數據服務爲用戶提供手機走動,所以在處理這個問題應該是在應用程序代碼正常路徑的一部分。

+0

感謝您的回答。你知道電話是否試圖定期重新連接嗎? – glarkou 2012-04-20 21:48:15

+0

@salamis - 我不相信它。我找不到任何文檔,但是有apphub和電話支持論壇(如果你是谷歌)的軼事證據。我的經驗是,它不會嘗試重新連接。 – 2012-04-20 21:55:01

+0

非常感謝。所以唯一的解決方案就是將問題作爲代碼的一部分來處理。並且只有在網絡可用時才執行後臺工作者。即使它是WiFi,3G,3.5G或其他。非常感謝。 – glarkou 2012-04-20 22:00:34