MonoDroid HttpWebRequest和WebClient不可靠?

时间:2012-06-20 00:05:41

标签: c# mono xamarin.android

我在MonoDroid中使用Webrequests并随机获取超时时遇到了很多麻烦。我的代码运行正常,有时所有请求都会超时并且不起作用。

我已经验证了我的请求中使用的网络服务不是问题。

以下是我可能用于使用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制作Webrequest的最佳方法是什么?

如何确保我的请求始终成功,并且如果Web服务正常运行,则不会超时?

2 个答案:

答案 0 :(得分:2)

我有关于Xamarin 4.2.6和4.2.8的问题。

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

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

答案 1 :(得分: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

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