2009-11-03 67 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