2017-07-15 60 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客戶端,並在屏幕截圖中顯示所有標題,並逐個刪除它們,直到我可以重現錯誤,然後僅使用該標題提交,以確認它是根本原因。 –