从.net调用URL而不验证HTTP协议

时间:2009-11-03 10:30:09

标签: .net https

我需要为返回数据的远程服务器创建HTTPS调用a 该服务器的响应不包括有效的HTTP协议
我收到了这个错误

System.Net.WebException:服务器提交了协议违规。节= ResponseStatusLine

我已经准备好了 useUnsafeHeaderParsing

但这可能没有帮助,因为HTTP协议实现得非常糟糕

我可以告诉.net完全跳过验证 或使用不验证HTTP协议的类

当我使用浏览器时,我可以看到响应

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用ServerCertificateValidationCallback回调来忽略证书验证错误:

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

这是一个静态属性,可以在执行HTTP请求之前设置。

答案 2 :(得分:0)

您很可能在服务器的另一侧出现问题。我愿意打赌你根本没有进入其他网站。如果您正在与标准的Apache或IIS服务器通信,那么它们在实现HTTP方面做得非常好。您的连接可能会中断。尝试使用Web浏览器进行操作,看看它是否有效。

答案 3 :(得分:0)

HTTP是TCP之上相当简单的协议。您可以使用普通套接字,并自行发送GET命令。