如何确保webclient / curl进程503错误,就像它们处理200一样

时间:2012-01-30 09:59:19

标签: webclient

如果网站弹出503,那么webclient就会抛出异常。

例如,转到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?

我们尝试在谷歌搜索某些内容时的样本。谷歌有时需要验证码。好吧,只是把它弹出来让我可以填写验证码。但是webclient只是抛出异常而不将内容分配给文件。那不好。

如何确保webclient不会丢弃任何内容。

同样适用于卷曲

2 个答案:

答案 0 :(得分:2)

没有人回答,所以我只告诉CURLOPT_FAILONERROR

将其设置为false。

我认为webclient有类似的东西。将此作为答案,除非有人提出更好的东西。

答案 1 :(得分:0)

对于WebClient,您需要处理WebException.Response。例如。此LINQPad查询转储我的Web服务器的“未找到”错误网页提供的HTML:

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