使用VB.Net发送Post请求

使用VB.Net发送Post请求,post,httpclient,webrequest,Post,Httpclient,Webrequest,我想从服务器端向另一台服务器发送Post请求。我想在代码中创建一些表单数据(不使用网页)并将其发送过来 根据我在网上读到的内容,我最终得到了下面的代码。然而,我只是猜测,不确定它是否正确,特别是因为我无法让它工作(我得到的异常已作为注释包含在代码中)。这是我的过错还是与我发送请求的位置有关的外部问题 Dim client = New HttpClient Dim request = WebRequest.CreateHttp("https://something.com/test") requ

我想从服务器端向另一台服务器发送Post请求。我想在代码中创建一些表单数据(不使用网页)并将其发送过来

根据我在网上读到的内容,我最终得到了下面的代码。然而,我只是猜测,不确定它是否正确,特别是因为我无法让它工作(我得到的异常已作为注释包含在代码中)。这是我的过错还是与我发送请求的位置有关的外部问题

Dim client = New HttpClient

Dim request = WebRequest.CreateHttp("https://something.com/test")
request.Credentials = CredentialCache.DefaultCredentials
request.UserAgent = "value"
request.Method = HttpMethod.Post.Method
request.ContentType = "application/x-www-form-urlencoded"

Dim params = New Dictionary(Of String, String)
params.Add("key1", "value1")
params.Add("key2", "value2")
params.Add("key3", "value3")
params.Add("key4", "value4")

Dim stream = request.GetRequestStream()
Dim content = New FormUrlEncodedContent(params)
content.CopyToAsync(stream)

' Exception occurs when executing the line below:           
' The underlying connection was closed: An unexpected error occurred on a send.
' InnerException = {"Unable to read data from the transport connection: 
' An existing connection was forcibly closed by the remote host."}  

Dim result = request.GetResponseAsync().Result          

Console.WriteLine(result.ToString)

您确定服务器具有有效的https证书吗

  • 证书已颁发给您正在访问的URI
  • 证书未过期
  • 证书由受信任的机构颁发(例如:Verisign)
  • 在这些标准中,#3是最常见的失败检查。您可以通过编程忽略任何或所有这些错误(风险由您自己承担)。下面是一个如何做到这一点的示例。(参考资料:)


    另外,提供完整的(内部)异常也会很有帮助

    好的,谢谢。这是内部异常(在代码注释中)。这是非常基本的。stacktrace显示了更多信息,但我认为您是正确的,URL导致了一个问题,可能是在另一个服务器端(例如防火墙问题)。我主要担心这可能是我的问题,因为我从未使用过HttpClient/WebRequest。