#asp.net #httpwebrequest
#asp.net #httpwebrequest
Вопрос:
Когда я выполняю HttpWebRequest.GetResponse по URL, GetResponse возвращает «Удаленный сервер вернул ошибку: (400) неверный запрос». вместо ответа.
Странно то, что когда я запускаю этот URL в браузере, я получаю правильный ответ.
разве webrequest не должен возвращать те же значения, что и браузер?
следующий код возвращает неверный запрос
// Create a request for the URL.
WebRequest request = WebRequest.Create(
"http://someUrl/api/v5/basicAuth");
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams and the response.
reader.Close();
response.Close();
также пытался использовать WebClient с теми же результатами.
есть идеи, как получить правильный ответ, такой же, как в браузере?
Ответ №1:
В заголовке говорится, что вы получаете 400 ошибочных запросов, но в вашем вопросе вы говорите, что 404 не найдено. Это очень разные запросы. Для 404 я бы устранял неполадки с самим URL-адресом и тем, как маршрутизируется запрос, DNS и т.д. Если это 400, то я бы использовал что-то вроде Fiddler, чтобы зафиксировать, как выглядит мой запрос при использовании браузера, затем посмотреть, как выглядит запрос при поступлении из программы, и посмотреть, что отличается / отсутствует. Возможно, необходимы некоторые HTTP-заголовки, такие как тип содержимого или обработка файлов cookie и т.д. И т.п. Но что-то вроде Fiddler могло бы, по крайней мере, помочь вам начать.
Комментарии:
1. да, вы исправили ошибку 400 при попытке простого WebRequest, как показано выше. и я получаю 404 при попытке отправить некоторые данные по этому URL.
2. Итак, как вы «должны» взаимодействовать с URL? Это веб-служба, которая отвечает только на GET, POST, PUT и т.д.? Если вы можете успешно добраться до него с помощью браузера и просмотреть данные, то я предполагаю, что GET работает. Поэтому я бы попробовал Fiddler, чтобы увидеть, в чем различия между запросом вашего браузера и HttpWebRequest из вашего кода.
3. да, это веб-служба, которая отвечает на GET, POST. Я проверю Fiddler, чтобы увидеть различия. Спасибо
4. Вы также должны иметь возможность использовать «Composer» Fiddler для создания POST-запросов для дальнейшего устранения неполадок. В Firefox также есть дополнение под названием Posterizer, которое делает нечто подобное.
5. Удалось ли вам увидеть различия с Fiddler? Вы разобрались с проблемой?