我在 MonoDroid 中使用 Webrequests 并随机超时时遇到了很多麻烦。我的代码工作正常,然后有时所有请求都超时并且不起作用。
我已经验证了我的请求中使用的 web 服务不是问题。
下面是一些代码示例,我可以使用它来使用 MonoDroid 从 Web 服务请求一些数据:
bool bolOk = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://www.website.com/service/");
request.Timeout = 20000;
request.Credentials = gv_objCredentials;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) {
bolOk = response.StatusCode == HttpStatusCode.OK;
}
如您所见,这是基本的东西。我总是在使用 ThreadPool.QueueUserWorkItem 或 TaskFactory 的 UI 的另一个线程上使用上述代码。
我注意到的是,如果请求从我的应用程序开始超时并且我将其插入我的计算机然后从 MonoDevelop 调试应用程序,请求工作而不会超时。我不确定这是否意味着什么。这类似于使用与手机位于同一网络上的浏览器在我的计算机上测试 Web 服务。Web 服务始终可以正常工作。
从 MonoDroid 发出 Web 请求的最佳方法是什么?
如果 web 服务正常运行,如何确保我的请求始终成功并且不会超时?