2017-07-15 64 views
0
Dim wc = New System.Net.WebClient 

    Dim apistring = wc.DownloadString("https://www.coinexchange.io/api/v1/getmarketsummaries") 

URL在浏览器中打开就好了。不知何故,webclient无法获得。嗯....为什么我无法让这个webclient为这个URL工作?

什么问题?

更新:我用一个修改过的webclient与useragent和饼干,它的工作原理。我认为它会检查用户代理等事情,但我不知道。

我仍然不知道问题是什么,仍然好奇。如果有人想检查和检查感觉自由。

基本上这个网站究竟在寻找什么,我们可以用什么软件来轻松地检查问题是什么。

+2

是否有任何错误报告?这可能是URL拒绝访问。也许扔403错误? – Bugs

+1

如果问题不再可复制,并且对于SO没有用处,则可以将其删除。 – Bugs

+0

@Bugs,或者OP可以自动回答“让请求看起来像来自Web浏览器”的解决方案,尽管我确信现在必须有一个愚蠢的做法! =) – Rob

回答

1

某些网站将不会响应仅包含Host标头的普通HTTP请求。他们需要额外的通用头文件,通常会在网页浏览器中设置。

通常,当WebClient请求失败时,服务器正在查找User-AgentAccept标头。服务器可能依靠这些标头来确定如何将响应输出到客户端。一个典型的例子是当API查看Accepttext/html,application/xmltext/javascripttapplication/json以确定它是否应返回HTML,XML,Javascript或JSON。

根据不同的网站,它可能还会寻找Referer,'Cookie',Accept-Language和/或Accept-Encoding标题。

基于浏览器生成的内容尝试组合这些值。

对于这个特定的网站,浏览器发送:

enter image description here

这个网站正在寻找标题是User-Agent头。如果不存在,则关闭连接并返回任何响应。

+0

有用,您是如何知道这一点的?你使用什么软件? –

+0

它来自经验。我刚刚开始使用一个基本的Web客户端,并在屏幕截图中显示所有标题,并逐个删除它们,直到我可以重现错误,然后仅使用该标题提交,以确认它是根本原因。 –