HTTPWebRequest唤醒WIFI?

时间:2012-04-20 18:15:29

标签: c# windows-phone-7 wifi backgroundworker

我有一个相当简单的问题。

我们使用BackgroundAgents(Periodic agents)来执行一些后台任务,这些任务需要WiFi(Internet)连接才能执行HttpWebRequest。正如在第二个参考中提到的那样,支持HttpWebRequest,但问题是如果Windows Phone被锁定或空闲超过1分钟,则WiFi被禁用。

根据我所阅读和尝试的内容,我有两个重要问题,直到知道:

  1. Microsoft是否会根据预定义的时间间隔定期启用WiFi以检查新电子邮件或其他通知?如果答案是肯定的,我的后台代理会在此间隔期间重新安排并运行吗?
  2. 直到知道我发现HttpWebRequest在锁定或闲置超过1分钟时不会唤醒手机。是这样的吗?很多人都说如果手机被锁定或者1分钟过去了,HttpWebRequest工作正常。我无法做到这一点。
  3. 感谢。

    示例代码:

    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的问题。

1 个答案:

答案 0 :(得分:1)

根据我日常使用手机的经验,Windows Phone在锁定后无法重新启用wifi,除非手机已插入并充电。它还允许在禁用wifi之前已经开始完成的数据传输。

但是,即使手机试图定期重新连接,每次用户重新连接并且Windows Phone无法处理这种情况时,一些wifi提供商会重定向到身份验证页面进行身份验证。

实际上,当用户随身携带电话时,无法保证您有可用的数据服务,因此处理问题应该是应用程序代码的正常路径的一部分。