2009-11-03 106 views
0

我需要建立HTTPS調用一個遠程服務器返回數據 該服務器劑量的反應不包括一個有效的HTTP協議
和我得到這個錯誤呼叫URL沒有驗證HTTP potocol

System.Net.WebException:服務器違反了協議。第= ResponseStatusLine

我都準備好這樣做 useUnsafeHeaderParsing

但是,由於HTTP協議是實現沒有可能幫得厲害

我可以告訴.NET在所有 或使用來跳過驗證當我使用的瀏覽器將不會驗證HTTP協議

我可以看到

回答

1

我我到底有躺椅和我寫了一些簡單的代碼在VB6
我把它轉化爲一個DLL註冊的DLL並添加referens到.NET項目
他發出的呼籲,我來回VB6劑量不會瓶坯HTTP協議驗證
難看,但工作

Option Explicit 

Dim UrlStr As String 

Public Sub InitUrlStr(ByVal pUrlStr As String) 
    UrlStr = pUrlStr 
End Sub 

Public Function SendHttpsRequest(ByVal pXml As String) As String 
    Dim WinHttp 
    Dim PostData 

    Set WinHttp = CreateObject("MSXML2.XMLHTTP") 

    PostData = pXml 

    WinHttp.Open "GET", UrlStr & PostData, False 

    WinHttp.Send ' Send request using https 
    SendHttpsRequest = WinHttp.responseText ' assign to local variable 

End Function 
0

你可以使用的響應類ServerCertificateValidationCallback回調忽略證書驗證錯誤:

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true; 

這是一個可以執行HTTP請求之前設置一個靜態屬性。

+0

這將告訴服務器忽略證書而不是HTTP potocol – Shvilam 2009-11-03 11:14:01

0

你很可能在服務器的另一端有問題。我願意打賭,你沒有通過其他網站。如果你正在與標準的Apache或IIS服務器交談,他們在實現HTTP方面做得很好。您的連接可能會中斷。嘗試使用網絡瀏覽器進行操作,看看它是否有效。

+0

當我使用的是網絡瀏覽器,它工作正常。 另一方面,它可能是一個應用程序可能一直在等待實現它們的HTTP協議自我沒有IIS或Apache – Shvilam 2009-11-03 11:59:24

0

HTTP是TCP上的一個相當簡單的協議。您可以使用普通套接字,並自己發送GET命令。

+0

我怎麼能做到這一點我可以找到一個代碼示例 – Shvilam 2009-11-03 12:00:08