2011-11-09 11 views
0

Я настроил перенаправление URL на http://freedns.afraid.org/, поэтому я могу сменить хост на файл, загружаемый моим приложением, без необходимости изменения кода в моем приложении.Resolve URL Redirect

Проблема в том, что перед загрузкой файла мне необходимо решить правильный URL. Я попробовал метод, который я нашел здесь в SO, но это не сработало (Webrequest).

Поэтому я полагаю, что они не используют общий перенаправление.

Как вы можете решить настоящий URL/IP?

UPDATE:

У меня есть еще один поддомен над на своем Free DNS, и если вы делаете downloadstring на то одном вы получаете страницу, которую он должен редирект. Возможно, эта информация может быть использована для любой помощи.

UPDATE2:

Вот код, я использую, чтобы принести другой сайт:

 WebClient client = new WebClient(); 
     string xml = client.DownloadString(new Uri("myfreednshere")); 

Итак, запустив этот код, я получаю строку веб-страницы Ъ, что «myfreednshere» переадресовывает к.

Это означает, что веб-клиенту удастся разрешить перенаправление URL. Есть ли какой-нибудь код, который я могу использовать, который только разрешает перенаправление?

Update3:

Это ответ я получаю с HTTPRequest:

{X-Abuse: URL redirection provided by freedns.afraid.org - please report any misuse of this service 
Keep-Alive: timeout=15, max=100 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Cache-Control: public, max-age=15 
Content-Type: text/html 
Date: Wed, 09 Nov 2011 21:55:21 GMT 
Server: Apache/1.3.41 (Unix) PHP/5.3.6 with Suhosin-Patch 
X-Powered-By: PHP/5.3.6 

} 
+0

Если ваш код работает для одного URL-адреса, а не другого, я бы предположил, что проблема заключается в перенаправлении, а не в коде. Если вы перейдете на этот URL-адрес в браузере, перенаправит ли он вас в нужное место? Можете ли вы показать нам код, который вы используете для получения документа? –

+0

@JimMischel Я обновил свой вопрос сейчас. – fgblomqvist

+0

на основе комментария токсичного к моему ответу http://stackoverflow.com/questions/8072052/resolve-url-redirect/8072355#8072355 это должен быть вопрос о Freedns? Переместить в webapps? – McKay

ответ

2

I «Мы заметили, что по крайней мере один сайт god.org (http://fb.afraid.org, единственный домен, с которым я мог бы работать с быстрой проверкой) не использует перенаправление HTTP, 301 переадресацию или проксирование. Он использует фреймы. Таким образом, исходный код должен работать:

WebClient client = new WebClient(); 
    string xml = client.DownloadString(new Uri("myfreednshere")); 

С небольшой модификации я использовал этот код:

WebClient client = new WebClient(); 
    string html = client.DownloadString(new Uri("http://fb.afraid.org")); 

результат вызова имел реальный URL (HTTP: //www.fragbite. com) в трех местах, один раз в комментарии, один раз в источнике кадра и один раз в ссылке в теге noframes.Вы должны иметь возможность анализировать URL-адрес, если он вам нужен программно.

+0

Разве я сказал вам, что вы гений? Ну, я знаю, что у меня нет, но вы действительно один;) Я проверил с firebug и нашел этот тег вверху: Так что да, просто выполните проверку этой страницы и получите эту строку. Большое спасибо! – fgblomqvist

0

Так вы желающей 301 редирект?

Его можно обрабатывать несколькими способами. Если это .NET, и если вы используете IIS 7, вы можете использовать модуль URL Rewrite (http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/), или вы можете напрямую изменить файл web.config, если знаете, что делаете.

<system.webServer> 
    <httpRedirect enabled="true" destination="http://domain.com/products" httpResponseStatus="Permanent" /> 
</system.webServer> 

Перейдите по этой ссылке для получения дополнительной информации о том, как обращаться с 301 по http://knowledge.freshpromo.ca/seo-tools/301-redirect.php

+0

нет У меня нет контроля над перенаправлением. url перенаправить на url b. Делая что-то с url, я хочу получить url b. – fgblomqvist

1

WebClient класс следующим образом переадресовывает. Попробуйте использовать HttpWebRequest:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url); 
httpRequest.AllowAutoRedirect = false; 

После того как запрос сделан, один из заголовков HTTP «Адрес», дает место, где он был перенаправлен (но не последовало, потому что AllowAutoRedirect был выключен)

+0

Он дает код, который я написал в своем ответе. «Перенаправление URL, предоставленное freedns.afraid.org - сообщите о любом неправильном использовании этой службы» – fgblomqvist

+0

Если это так, то у вас нет никакого контроля над перенаправлением. freedns извлекает данные и получает их для вас. Вы не можете управлять им в коде, прокси делает это за вас. – McKay

+1

Если вы используете приведенный выше код, вы можете получить Location (http://en.wikipedia.org/wiki/HTTP_location), который является URL-адресом, к которому он перенаправляет вас. Чтобы получить местоположение, 'response.GetResponseHeader (« Местоположение »)'. Он также может быть доступен с помощью 'WebClient' через свойство ResponseHeaders [" Location "]'. –