我有一个http://somesite.com/photo/123类型的网址,重定向到网址somesite.com/13sjd_9488.jpg。我如何从.NET和Silverlight中的第一个URL转到第二个URL?
答案 0 :(得分:1)
您无法在客户端执行此操作,因为此重定向是在服务器端完成的,因此除非您向此URL发送HTTP请求,否则您无法执行此操作:
var request = WebRequest.Create("http://somesite.com/photo/123");
request.BeginGetResponse(ar =>
{
using (var response = ((WebRequest)ar.AsyncState).EndGetResponse(ar))
{
// This will point to the redirected url:
// http://somesite.com/13sjd_9488.jpg
string responseUri = response.ResponseUri.AbsoluteUri;
}
}, request);
答案 1 :(得分:1)
如果您可以发送HttpRequest
:
public static bool TryGetRedirectedUri(Uri uri, out Uri redirectedUri)
{
var request = (HttpWebRequest)WebRequest.Create(uri);
request.AllowAutoRedirect = false;
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.Moved)
{
redirectedUri = new Uri(response.Headers[HttpResponseHeader.Location]);
return true;
}
else
{
redirectedUri = null;
return false;
}
}
}
注意:这并不包括所有情况,需要更多的健全性检查。