我希望我不会开始已经完成的话题,但我在这里找不到任何正确的答案,也没有找到任何其他答案。 所以我们走了: 我使用WebClient从网页下载HTML代码,然后我用该WebClient发送新请求,WebPage重定向我。现在我想要网站给我的地方。
WebClient类本身没有任何合适的属性,我已经尝试重写该类,以便我可以获得响应URI但不知何故它对wp7不起作用。
那么任何想法如何获取我的WebClient重定向的URI?或者当我想使用我自己的类时,应该知道应用程序崩溃的原因:
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;
}
}
}
提前致谢!
答案 0 :(得分:2)
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;
}
}
我在主页面构造函数中启动请求,然后我在回调中处理它。请注意我如何获得ResponseUri
- 您的最终目的地。
如果您不想阻止重定向并只是获取网址,则无需处理AllowAutoRedirect
,就像我在上面的代码段中所做的那样。
答案 1 :(得分:1)
使用HttpWebRequest代替WebClient并将AllowAutoRedirect设置为false。
这也很有帮助 Getting the location from a WebClient on a HTTP 302 Redirect?