RestClient работает, но HttpWebRequest не работает

#c# #webrequest

Вопрос:

Этот код работает:

 var source = "https://jade.io/xml/au-qld-dc.xml";    var client = new RestClient(source);  var request = new RestRequest(Method.GET);  IRestResponse resp = client.Execute(request);  Console.WriteLine(resp.Content);  

XML-файл извлекается и отображается в консоли. Но этот код не работает:

 HttpWebRequest httpsRequest = (HttpWebRequest) WebRequest.Create(source); httpsRequest.Method = "GET"; var response = httpsRequest.GetResponse();  

Это приводит к ошибке 403 (Запрещено)…

Я хотел бы знать, почему это не работает, потому что у меня есть устаревший код, использующий WebRequest, и перед заменой всего этого кода на RestClient, если есть простое исправление…

Комментарии:

1. Например, я думаю RestClient , что будет добавлен заголовок агента пользователя по умолчанию, в то время как HttpWebRequest не будет.

2. Вы можете использовать сетевой сниффер, такой как Wireshark или Fiddler, для проверки разницы между двумя http-вызовами. Используйте это, чтобы исправить проблему.

Ответ №1:

Добавьте заголовок UserAgent, и он будет работать.

 var source = "https://jade.io/xml/au-qld-dc.xml"; HttpWebRequest httpsRequest = (HttpWebRequest)WebRequest.Create(source); httpsRequest.Method = "GET"; httpsRequest.UserAgent = "Test"; var response = httpsRequest.GetResponse();  

Комментарии:

1. спасибо, теперь это работает! но что странно, что он не работает с этим агентом пользователя: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Геккон) Chrome/94.0.4606.71 Safari/537.36»; Вы знаете, почему?