Windows phone 7 在WebClient wp7中重定向时获取当前Uri
我希望我不会开始一个已经完成的话题,但我在这里没有找到任何正确的答案,也没有找到任何其他答案。 现在我们开始: 我使用WebClient从网页下载HTML代码,然后使用该WebClient发送一个新请求,网页将重定向我。现在我想知道现在网站把我放在哪里了 WebClient类本身没有任何合适的属性,我已经尝试重写该类以便获得响应URI,但不知何故,它对wp7不起作用 那么,你知道如何获取我的网络客户端重定向的URI吗?或者知道我想使用自己的类时应用程序崩溃的原因:Windows phone 7 在WebClient wp7中重定向时获取当前Uri,windows-phone-7,uri,webclient,Windows Phone 7,Uri,Webclient,我希望我不会开始一个已经完成的话题,但我在这里没有找到任何正确的答案,也没有找到任何其他答案。 现在我们开始: 我使用WebClient从网页下载HTML代码,然后使用该WebClient发送一个新请求,网页将重定向我。现在我想知道现在网站把我放在哪里了 WebClient类本身没有任何合适的属性,我已经尝试重写该类以便获得响应URI,但不知何故,它对wp7不起作用 那么,你知道如何获取我的网络客户端重定向的URI吗?或者知道我想使用自己的类时应用程序崩溃的原因: public clas
public class MyWebClient : WebClient
{
Uri _responseUri;
public Uri ResponseUri
{
get { return _responseUri; }
}
protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
{
WebResponse response = base.GetWebResponse(request, result);
_responseUri = response.ResponseUri;
return response;
}
}
}
提前谢谢
HttpWebRequest
是这里的解决方案,因为WebClient
无论如何都是它的包装器。类似的方法应该适合您的具体情况:
private HttpWebRequest request;
private bool flagIt = true;
public MainPage()
{
InitializeComponent();
request = (HttpWebRequest)WebRequest.Create("http://google.com");
request.BeginGetResponse(new AsyncCallback(GetData), request);
}
public void GetData(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
Debug.WriteLine(response.ResponseUri.ToString());
if (flagIt)
{
request = (HttpWebRequest)WebRequest.Create("http://microsoft.com");
request.BeginGetResponse(new AsyncCallback(GetData), request);
flagIt = false;
}
}
我在主页构造函数中启动请求,然后在回调中处理它。请注意我是如何得到您的最终目的地响应的
如果你不想阻止重定向并简单地获取URL,你不需要处理AllowAutoRedirect
,就像我在上面的代码片段中所做的那样。好吧,因为我的整个程序都使用webclient,所以我试着绕过HttpWebRequest(实际上我以前并不知道)。感谢您提供了有详细记录的答案!:)