Найти где URL перенаправляет в C # - PullRequest
0 голосов
/ 04 сентября 2010

У меня есть URL-адрес типа http://somesite.com/photo/123, который перенаправляет на URL-адрес somesite.com/13sjd_9488.jpg. Как перейти от первого URL ко второму в .NET и Silverlight?

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Если вы можете отправить 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;
        }
    }
}

Примечание. Это не охватывает все случаи и требует дополнительных проверок работоспособности.

1 голос
/ 04 сентября 2010

Вы не можете сделать это на стороне клиента, потому что это перенаправление выполняется на стороне сервера, поэтому, если вы не отправите HTTP-запрос на этот URL, вы не сможете сделать это:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...