#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»; Вы знаете, почему?