WebClient.DownloadString不返回任何数据

时间:2013-11-09 13:09:46

标签: c# asp.net vb.net

我遇到了WebClient.DownloadString的一个奇怪的问题,我似乎无法解决,我的代码:

Dim client As New WebClient()
Dim html = client.DownloadString("http://www.btctrade.com/")

内容似乎不是完全AJAX,所以不可能。是因为网页是中文的吗?我猜测HTML只是作为HTML提供,所以也不可能。当我转到它时,网址很好,似乎也没有重定向到https。

任何人都知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

您必须在webclient标头中设置Cookie和useragent

client .Headers.Add(HttpRequestHeader.UserAgent, "UserAgent,Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1");
client .Headers.Add(HttpRequestHeader.Cookie, "USER_PW=9b1283bfe37ac47b243a1e0c9c1c9e52; PHPSESSID=f692406a0c84dba2605a7065d55a3b53")

如果您希望请求完成所有这些工作,您必须使用httpwebrequest然后保存所有响应的标头并在新请求中使用它们

答案 1 :(得分:0)

WebClient没有错误,所以服务器可能正在返回您没想到的数据。使用Fiddler观察当您在网络浏览器中访问该网站时会发生什么。

当我执行您的代码时,网站没有返回任何数据。当我在Web浏览器中访问该站点时,它返回了数据。 可能是该网站检测到您是僵尸程序并拒绝您访问。通过模仿您在Fiddler中看到的内容来假冒浏览器。