我已将其报告为错误: https://bugzilla.xamarin.com/show_bug.cgi?id=30604
之前报道过这里: https://bugzilla.xamarin.com/show_bug.cgi?id=22384
问题是,如果您向服务器发出 Post 请求,而该服务器以重定向进行回复,则 HttpClient 将超时。如果您使用 MS .NET,则不会出现此问题,您必须使用 Mono 运行(在 Windows/Android/iOS 上测试)
以下是重现方法:
您需要拥有 Mono 和 Xamarin Studio 或 MonoDevelop 才能使用 Mono 运行客户端控制台应用程序。
创建一个新的 ASP.NET 项目并将以下方法添加到某个控制器(我使用默认的 Home 控制器):
[HttpPost]
public ActionResult DeleteComment(int commentId)
{
return Redirect("/Home/Contact");
}
创建一个新的控制台项目:
var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:55141/"); // use the correct port
client.Timeout = TimeSpan.FromSeconds(10); // Doesn't have to be 10, just to save time. You can leave it as default
var content1 = new StringContent("{\"commentid\":1}");
content1.Headers.ContentType = new MediaTypeHeaderValue("application/json");
try {
var r1 = client.PostAsync("/home/DeleteComment", content1).Result; // Change to your method url
var test = r1.StatusCode;
}
catch (Exception e) {
return;
}
这将:
了解更多:
我知道,这个问题已经很老了,但是如果有人使用 HttpClient 遇到这个问题,这个解决方案可能会帮助你。
HttpClient httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(10);