找出网址在C#中重定向的位置

时间:2010-09-04 08:07:00

标签: c# silverlight

我有一个http://somesite.com/photo/123类型的网址,重定向到网址somesite.com/13sjd_9488.jpg。我如何从.NET和Silverlight中的第一个URL转到第二个URL?

2 个答案:

答案 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;
        }
    }
}

注意:这并不包括所有情况,需要更多的健全性检查。