Member 11570261 Ответов: 2

Код состояния возврата URL-кода не работает в C#


Привет Ребята,

Я пытаюсь получить код состояния URL-адреса. Я использую приведенный ниже код для достижения этой цели. Это хорошо работает. Но проблема в том, что код показывает некоторые допустимые URL-адреса, которые также не работают.

Пожалуйста смотрите код ниже где URL отлично работает в браузере но код возвращает следующие результаты:

Удаленный сервер вернул ошибку: (403) запрещено

Почему? нужна ваша помощь, чтобы исправить это.
Заранее спасибо.

Что я уже пробовал:

Я пробовал с разными кодами, но все они не дают точных результатов.
try
{
    string url="https://www.digikey.com/product-detail/en/rushup/CLOUD-JAM-L4/1770-1003-ND/7388464";
    // Creates an HttpWebRequest for the specified URL. 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    // Sends the HttpWebRequest and waits for a response.
    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
        Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}",
            myHttpWebResponse.StatusDescription);
    // Releases the resources of the response.
    myHttpWebResponse.Close();
}
catch (WebException e)
{
    Console.WriteLine("\r\nWebException Raised. The following error occured : {0}", e.Status);
}
catch (Exception e)
{
    Console.WriteLine("\nThe following Exception was raised : {0}", e.Message);
} 

F-ES Sitecore

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

2 Ответов

Рейтинг:
2

RickZeeland

Я думаю, что ваша проблема вызвана двойными кавычками в строке url, не используйте:

string url="<a href="https://www.digikey.com"";
Но используйте:
string url = @"<a href=""https://www.digikey.com""";


Member 11570261

Спасибо за ответ.
Это консольное приложение, и там нет никаких шансов на выпуск двойных кавычек.

Рейтинг:
1

AndriiMakhota

Попробуйте использовать это:

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.UseDefaultCredentials = true;
myHttpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
myHttpWebRequest.UserAgent = "MyHttpRequester";

Это позволит приложению использовать учетные данные вошедшего пользователя для доступа к сайту.


Member 11570261

Я все еще сталкиваюсь с той же проблемой. Я запускаю этот код в консольном приложении C#.
Помогите мне решить этот вопрос.

AndriiMakhota

Добавление моих 2 строк кода после

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);

не помогает?

Member 11570261

Спасибо за ответ.
Да, все еще возвращаю код состояния 403. Но я ожидаю код статуса 200.

AndriiMakhota

Странно, он работает на моем компе. Попробуйте добавить данные о клиенте, что-то вроде:

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.UserAgent = "MyHttpRequester";

Member 11570261

Спасибо.
Теперь он работает и возвращает код состояния 200.
Как агент пользователя помогает решить эту проблему?
myHttpWebRequest.UserAgent = "MyHttpRequester";

Я собираюсь использовать этот код для размещения в приложении функций Azure. Итак, какое значение UserAgent я должен разместить. Могу ли я использовать приведенный ниже код в приложении функций Azure?
myHttpWebRequest.UserAgent = "MyHttpRequester";
ОПЕРАЦИОННАЯ

myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763";

Пожалуйста, поделитесь своим предложением.