【问题标题】:how to make a httpwebrequest on application launch in wp7如何在 wp7 中启动应用程序时发出 httpwebrequest
【发布时间】:2013-12-16 15:00:20
【问题描述】:

如何在 windows phone 7 和 8 中同步启动应用程序的 httpwebrequest,以便根据服务器的响应可以更改起始页。

private void Application_Launching(object sender, LaunchingEventArgs e)
 {
   // http request and respose  b
   // based on response  select the start page  
 }

【问题讨论】:

  • 仅支持异步请求。

标签: windows-phone-7 windows-phone-8


【解决方案1】:

只执行async 请求。对于WP7,您可以执行async 请求并等待response,基于response,您可以按照您的逻辑导航到页面。为此,请在 Startup Page:

在class's constructor这样的调用方法中NavigateToPages();

现在在该方法中,您可以调用您想要的http reqeust,当您获得response 时,导航到类似页面,

void NavigateToPage()
{
    WebClient client = new WebClient();
    client.DownloadStringCompleted += (object sender, DownloadStringCompletedEventArgs e) => 
    {
        var result = e.Result;
        //Navigate to page
    }
    client.DownloadStringAsync(new Uri("<your web request"));
}

这将等到您收到response。同时,要向用户显示您正在请求 web service,您可以添加 ProgressIndicator 并在开始 web request 之前启动它并将“获取响应”作为 text 并在 response让它empty ""。还建议您在try-catch-finally 块中调用请求。这样,如果互联网中断或获取reponse 的问题,应用程序不应崩溃。

我为 WP7 做了这个,我认为应该也适用于 WP8。如果你愿意,试试吧。

【讨论】:

    【解决方案2】:

    你不能进行同步调用。

    你能做的就是下一个最好的事情。使方法异步并使用 http 客户端的 PCL 版本。

    这将使您的逻辑以类似同步的方式流动(尽管仍然是异步的)。

    【讨论】:

      【解决方案3】:

      正如@Hermit Dave 建议的那样,您不能在 WP 中发出同步 http 请求,并且使其异步会破坏您当前的应用程序逻辑。应用程序执行可能会在调用返回响应之前退出 Application_Launching 方法。

      也许您可以创建一个默认页面作为起始页面,显示某种加载动画和一些提示,让用户了解应用程序当前正在处理什么。在该页面中进行异步 http 请求。并在回调中,根据响应重定向到正确的页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多