gpt4 book ai didi

vb.net - 无法将 xml 发送到 webservice - 底层连接已关闭。发送时发生意外错误

转载 作者:行者123 更新时间:2023-12-04 21:37:49 26 4
gpt4 key购买 nike

我正在创建一个应用程序来向 Web 服务提交一些 XML。
问题是我无法与网络服务通信。当我调用“request.GetRequestStream()”时,出现此错误:

The underlying connection was closed. An unexpected error occurred on a send.

ex.Status = SendFailure {4}



这是我正在使用的代码:
Imports System.CodeDom.Compiler
Imports System.CodeDom
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Reflection
Imports System.Web.Services.Protocols
Imports System.Net.WebRequest
Imports System.Net
Imports System.Xml.Serialization
Imports System.Xml
Imports System.Uri
Imports System.Text
Imports System.Security.Policy
Imports System.Security
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Security.Cryptography.SHA1CryptoServiceProvider
Imports System.Web.UI.Page
Imports System.Web.Services
Imports System.Windows.Forms.Application
Imports System.Data.OleDb
Imports Microsoft.VisualBasic.Logging



Private Function Send(oRequest As String) As String
Dim CaminhoCertificado As String = StartupPath + "\certificados\TesteWebServices.pfx"
Dim SenhaCertificado As String = "*********"

Dim EnderecoWebService As String = "https://servicos.portaldasfinancas.gov.pt:709/ws/arrendamento"""
Dim SoapAction As String = "https://servicos.portaldasfinancas.gov.pt/arrendamento/definitions/Arrendamento/registarDadosContratoRequest"


Try

Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(EnderecoWebService), HttpWebRequest)
Dim cert As New X509Certificate2()
cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet)



request.ClientCertificates.Add(cert)

''''''''''''''''''''''''''''''''''''''''
'System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3

request.ProtocolVersion = HttpVersion.Version10
request.AllowAutoRedirect = True
request.UserAgent = "Mozilla/3.0 (compatible; My Browser/1.0)"
'request.Proxy = System.Net.WebProxy.GetDefaultProxy()
'request.UseDefaultCredentials = True
'request.Credentials = CredentialCache.DefaultCredentials
''''''''''''''''''''''''''''''''''''''''

request.Method = "POST"
request.ContentType = "text/xml; charset=utf-8"
request.Accept = "text/xml"
request.KeepAlive = False


request.Headers.Add("SOAPAction", SoapAction)
Dim postData As String = oRequest
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentLength = byteArray.Length
''''''''''''''''
Dim dataStream As Stream = request.GetRequestStream() ''''error is triggered in this line
''''''''''''''''
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
dataStream = response.GetResponseStream()

Dim reader As New StreamReader(dataStream, Encoding.GetEncoding("windows-1252"))
Dim responseFromServer As String = reader.ReadToEnd()

reader.Close()
dataStream.Close()
response.Close()
Return responseFromServer





Catch ex As WebException
My.Application.Log.WriteEntry("Error: " & ex.Message & " - " & ex.Status)
If ex.Status = WebExceptionStatus.ProtocolError Then
Dim resp As WebResponse = ex.Response
Dim sr As New StreamReader(resp.GetResponseStream())
Return sr.ReadToEnd()
Else
Return ex.Message & " - " & ex.Status
End If

End Try

End Function

目标框架是 .Net Framework 4.5。
如何将 xml 正确发送到此网络服务?

最佳答案

你评论了 ServicePointManager.SecurityProtocol分配 - 可能需要,因为连接是 HTTPS - 这可能是 this 的副本.

关于vb.net - 无法将 xml 发送到 webservice - 底层连接已关闭。发送时发生意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com