Длинные URL из коротких с использованием C # - PullRequest
3 голосов
/ 04 июля 2010

Я использовал API LongURL.org для расширения коротких URL-адресов.Самое замечательное в этом сервисе заключается в том, что он возвращает длинный URL-адрес, название реальной страницы и мета-информацию.

Реальная проблема, с которой я столкнулся, заключается в том, что для извлеченияданные.Я подумываю переместить запрос в JavaScript, чтобы URL выбирался через панель обновления AJAX, чтобы страница загружалась быстро, а данные URL обновлялись, пока пользователь просматривает контент (некоторые результаты поиска).

Кто-нибудь знает, как еще я мог бы собрать информацию, описанную выше, в лучшие сроки?Я использую C # ASP.NET, но рассмотрю решения на других языках.Любое руководство в этой области высоко ценится.

1 Ответ

5 голосов
/ 05 июля 2010

Вот тот, который я использовал в проекте раньше ...

private string UrlLengthen(string url)
{
    string newurl = url;

    bool redirecting = true;

    while (redirecting)
    {

        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newurl);
            request.AllowAutoRedirect = false;
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 4.0.20506)";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if ((int)response.StatusCode == 301 || (int)response.StatusCode == 302)
            {
                string uriString = response.Headers["Location"];
                Log.Debug("Redirecting " + newurl + " to " + uriString + " because " + response.StatusCode);
                newurl = uriString;
                // and keep going
            }
            else
            {
                Log.Debug("Not redirecting " + url + " because " + response.StatusCode);
                redirecting = false;
            }
        }
        catch (Exception ex)
        {
            ex.Data.Add("url", newurl);
            Exceptions.ExceptionRecord.ReportWarning(ex); // change this to your own
            redirecting = false;
        }
    }
    return newurl;
}
...