AllowAutoRedirect in windowsPhone
本文关键字:windowsPhone in AllowAutoRedirect | 更新日期: 2023-09-27 18:12:35
在HttpClientHandler有属性AllowAutoRedirect,但在构建应用程序为WindowsPhone抛出异常:
HttpClientHandler。在此平台上不支持AllowAutoRedirect。请检查HttpClientHandler。
使用HttpClientHandler.AllowAutoRedirect.我真的想阻止自动重定向。我尝试使用HttpWebRequest:
var client = (HttpWebRequest) WebRequest.Create(connectionUrl);
client.Headers["AllowAutoRedirect"] = "false";
client.Method = "GET";
client.Headers["UserAgent"] = @"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31";
client.ContentType = "application/json";
client.Headers["ContentLength"] = client.ToString().Length.ToString();
client.BeginGetResponse(Callback, client);
private void Callback(IAsyncResult ar)
{
var requestState =(HttpWebRequest) ar.AsyncState;
using (var postStream = requestState.EndGetRequestStream(ar))
{}
}
此代码在EndGetRequestStream上抛出异常:"值不在预期范围内"我期待你的帮助。
我认为您正在接收ArgumentException: Value does not fall within the expected range
,因为您正在客户端启动BeginGetResponse()
,但随后在回调中执行EndGetRequestStream()
,而您应该调用EndGetResponse()
。设置AllowAutoRedirect
工作很好,你只需要修复你的代码。试试这个:
var client = (HttpWebRequest)WebRequest.Create(connectionUrl);
client.AllowAutoRedirect = false;
client.Method = "GET";
client.BeginGetResponse(Callback, client);
private void Callback(IAsyncResult ar) {
var state = (HttpWebRequest)ar.AsyncState;
using (var response = state.EndGetResponse(ar)) {
var streamResponse = response.GetResponseStream();
var streamRead = new StreamReader(streamResponse);
var responseString = streamRead.ReadToEnd();
}
}
为什么不使用HttpClient和HttpClientHandler??
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.AllowAutoRedirect = false;
// Create an HttpClient using the HttpClientHandler
HttpClient client = new HttpClient(clientHandler);
更多信息:http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx