6

我在 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 服务正常运行,如何确保我的请求始终成功并且不会超时?

4

2 回答 2

2

我在 Xamarin 4.2.6 和 4.2.8 上遇到了问题。

感谢 Xamarin 的支持,他们发现了问题并建议我在我的项目属性中将我的构建定位到 armeabi-v7a 而不是 armeabi(这里描述了一些多核处理器问题)

根据您是否计划支持多核处理器,您应该查看我们的这篇文章,并且可能需要手动编辑您的 .csproj 文件。

于 2012-10-24T12:57:13.967 回答
1

有一个新版本的 Mono for Android (4.2.5) 修复了 WebRequest 和 webRequestStream 的一些错误。您可以在此处查看发行说明:http: //docs.xamarin.com/android/Releases/Mono_For_Android_4/Mono_for_Android_4.2.5

我建议下载最新的位并检查它是否有效。如果没有,请提交一个错误,他们肯定会在产品的下一个版本中修复它。

于 2012-09-07T15:21:39.703 回答