Windows Phone 8 Web Post 在回调完成后返回布尔值

本文关键字:返回 布尔值 回调 Phone Web Post Windows | 更新日期: 2023-09-27 17:55:29

我正在尝试在Windows Phone 8中创建一个应用程序,并通过将其编码为简单的类来使其易于扩展或更改。我想使用执行HTTP POST以使用户登录到服务的Web客户端进行简单的Web调用。这是我到目前为止的流程:

  • 用户输入用户名和 api 详细信息,或者从以前保存的详细信息调用它们。
  • WebClient对Web服务进行POST并接收包含用户信息等的XML响应。
  • 设置WebClient.UploadStringCompleted += new UploadStringCompletedEventHandler(name)后执行回调
  • 处理用户信息并完成工作。

出于各种原因,主要是希望编码到类中并最终将代码作为免费SDK发布给其他开发人员,我希望流程如下所示:

  • 用户输入详细信息或从保存的详细信息调用。
  • 类中的函数调用类似于 if(class.Authenticate(user,apikey)){logged in stuff}; 的函数,它返回一个boolean值,甚至更好的整数值,所以我可以轻松地处理来自 Web 服务的错误。

尝试过的任何方法都不会使这项工作,我无法弄清楚如何使其与异步和 await 一起工作,因为 Web 客户端似乎只是在自己的线程上执行,并且在回调完成之前不会为我保留一个。

我在某处找到了一个自定义的 Web 客户端类,但它只做了 GET 请求,这不足以满足我的需求。

Windows Phone 8 Web Post 在回调完成后返回布尔值

你不想这样做。

为此,您需要阻止正在执行的线程,直到服务器响应:
- 这可能是很长的时间。
- 如果在 UI 线程上,这将停止用户与 UI 交互。
- 如果没有连接或连接速度非常慢怎么办

这就是WebClient没有同步调用方式的原因。

有一些方法可以使执行看起来同步,但通过学习使用框架并了解为什么它希望您以特定方式工作以及为什么这适用于偶尔连接的设备,您将获得更多。

您还可以通过发出"等待"请求来使此代码看起来同步。在 http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx 查看更多信息