如何在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
}
答案 0 :(得分: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
之前启动它,并将“获取响应”设为{{1并在text
中将其设为response
。此外,建议您在empty ""
块中调用请求。因此,如果互联网出现故障或获取try-catch-finally
应用程序的问题不应该崩溃。
我为WP7做了这个,我认为也适用于WP8。如果你愿意,可以尝试一下。
答案 1 :(得分:0)
你不能进行同步通话。
你能做的是下一个最好的事情。使方法异步并使用PC客户端版本。
这将允许逻辑以同步方式流动(尽管仍然是异步)。
答案 2 :(得分:0)
正如@Hermit Dave建议的那样,你不能在WP中创建同步http请求,并使其成为异步会破坏你当前的应用程序逻辑。应用程序执行可能会在调用返回响应之前退出Application_Launching方法。
也许您可以创建一个默认页面作为显示某种加载动画的起始页面,并提供一些提示,以便用户了解应用程序当前正在处理的内容。在该页面中创建异步http请求。在回调中,根据响应重定向到正确的页面。