И WebClient, и HttpWebRequest внезапно не смогли получить базовые страницы Amazon? - PullRequest
0 голосов
/ 29 июня 2011

У нас есть собственное приложение, которое время от времени извлекает некоторые данные с некоторых страниц Amazon (мы знаем, что у них есть API для определенных операций ... для того, что мы делаем, требуется некоторая пользовательская информация, не включенная в API). У нас никогда не было проблем с перетаскиванием их страниц, но внезапно Amazon возвращает «(503) Server Unavailable» практически при каждом запросе, и это происходит в течение нескольких дней, поэтому мы сомневаемся, что это временно. Даже что-то простое:

System.Net.WebClient client = new System.Net.WebClient();
string data = client.DownloadString(new Uri("http://www.amazon.com/Bose-Companion-multimedia-speaker-Graphite/dp/B000HZBR64/"));

Странно то, что эти страницы прекрасно загружаются в веб-браузере, но каждый раз, когда мы пытаемся протянуть их через код, происходит сбой.

Что может вызвать сбой этих функций? Возможно ли, что они что-то изменили со своей стороны и что нам нужно сделать какую-то собственную логику с нашими вызовами?

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

После некоторого дальнейшего тестирования выясняется, что это произошло, потому что Amazon нужно, чтобы параметр Accept в HttpWebRequest был специально установлен. При установке на:

request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

Все работало нормально. Это недавнее изменение, поэтому они, должно быть, что-то изменили на своем конце.

1 голос
/ 29 июня 2011

проверьте user-agent вашего запроса. сделайте пользовательский агент таким же, как ваш браузер. И проверить, установлен ли какой-либо прокси для вашего приложения? возможно ваш браузер и ваше приложение используют разные прокси

...