Как убедиться, что веб-клиент / curl обрабатывает ошибку 503, как они обрабатывают 200 - PullRequest
2 голосов
/ 30 января 2012

Если на сайте появляется 503, тогда клиент просто выдаст исключение.

Например, перейти к http://www.google.com/sorry/?continue=http%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dkucing

Если мы откроем его в Internet Explorer, откроется страница. Если мы используем livehttpheader, он возвращает 503, а не 200. Тем не менее, он все равно что-то показывает.

Теперь попробуйте свернуть ту же страницу.

http://www.google.com/sorry/?continue=http%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dkucing

Завиток просто перестанет работать. Так как же заставить локон лечить 503 как 200?

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

Как обеспечить, чтобы веб-клиент не выбрасывал вещи.

То же самое относится к локону

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Никто не отвечает на него, поэтому я просто скажу CURLOPT_FAILONERROR

Установите значение false.

Я думаю, что есть что-то подобное для веб-клиента.Это будет ответом, если кто-то не придумает что-нибудь получше.

0 голосов
/ 03 ноября 2012

Для WebClient вам необходимо обработать WebException.Response. Например. этот запрос LINQPad выводит HTML-код, предоставленный веб-страницей ошибки «Not Found» моего веб-сервера:

Dim wc = New System.Net.WebClient
Try 
  Dim rd = wc.DownloadData(New Uri("http://localhost/test"))
  rd.Dump
Catch Ex As System.Net.WebException
 Dim rs = Ex.Response
 Call (New StreamReader(rs.GetResponseStream)).ReadToEnd.Dump
End Try

Теперь на самом деле используется WebClient.

...