【问题标题】:Need help converting soap post to VB.net需要帮助将肥皂帖转换为 VB.net
【发布时间】:2021-10-19 06:45:55
【问题描述】:

我正在尝试获取供应商给我的肥皂帖子大纲。我不是编码员,但只是尝试拼凑我可以在网上找到的内容。任何有帮助的都将不胜感激。

他们提供的代码。

POST /ClientService.asmx HTTP/1.1
Host: service.velocify.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://service.leads360.com/ModifyLeadStatus"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ModifyLeadStatus xmlns="https://service.leads360.com">
      <username>string</username>
      <password>string</password>
      <leadId>int</leadId>
      <statusId>int</statusId>
    </ModifyLeadStatus>
  </soap:Body>
</soap:Envelope>

这是我目前在 VB.net 中所拥有的

Module Velocify

    Function SOAPRequest()

        Dim Request As WebRequest
        'Dim Response As WebResponse
        Dim DataStream As Stream
        Dim Reader As StreamReader
        Dim SoapByte() As Byte
        Dim SoapStr As String
        Dim pSuccess As Boolean = True

        SoapStr = "<?xml version=""1.0"" encoding=""utf-8""?>"
        SoapStr = SoapStr & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">"
        SoapStr = SoapStr & "<soap12:Body>"
        SoapStr = SoapStr & "<ModifyLeadStatus xmlns=""https://service.leads360.com"">"
        SoapStr = SoapStr & "<username>string</username>"
        SoapStr = SoapStr & "<password>string</password>"
        SoapStr = SoapStr & "<leadId>int</leadId>"
        SoapStr = SoapStr & "<statusId>string</statusId>"
        SoapStr = SoapStr & "</ModifyLeadStatus>"
        SoapStr = SoapStr & "</soap12:Body>"
        SoapStr = SoapStr & "</soap12:Envelope>"

        Try
            SoapByte = System.Text.Encoding.UTF8.GetBytes(SoapStr)

            Request = WebRequest.Create("https://www.service.velocify.com")
            'Request.Headers.Add("SOAPAction", "")

            Request.ContentType = "text/xml; charset=utf-8"
            Request.ContentLength = SoapByte.Length
            Request.Method = "POST"

            DataStream = Request.GetRequestStream()
            DataStream.Write(SoapByte, 0, SoapByte.Length)
            DataStream.Close()

            'Response = Request.GetResponse()
            'DataStream = Response.GetResponseStream()
            Reader = New StreamReader(DataStream)
            Dim SD2Request As String = Reader.ReadToEnd()

            DataStream.Close()
            Reader.Close()
            'Response.Close()

        Catch ex As WebException
            MsgBox(ex.ToString())
        End Try

    End Function


End Module

请让我知道我做错了什么。当前的错误是说我没有收到来自远程服务器的响应。

【问题讨论】:

  • soap12: 的每个实例可能应该只是 soap:
  • 负载是 XML,所以我强烈建议使用它而不是尝试进行字符串连接。由于缺少转义等,您可能会面临格式错误的 XML 的风险。 VB 的 XML 文字和对直接使用 XElement 相关类型的相关支持可能很有用。

标签: vb.net post soap


【解决方案1】:

这是一个长远的目标,但我多年前就做过类似的事情,也许它可以在某种程度上帮助你。今天我只使用可用的 ServiceReferences。

首先将 SOAP XML 放在一个文本框中,这样你就不需要处理所有的 (") 和斜线。我们称之为 txtYourSoap。替换用户名、密码和所有你需要的值。然后将此代码放在按钮中:

    Dim xUri As New Uri("https://service.leads360.com/ModifyLeadStatus")
    Dim WebClientx As New System.Net.WebClient()
    'WebClientx.Headers.Add("Content-Type", "application/json")
    WebClientx.Headers.Add("Content-Type", "text/xml; charset=utf-8")
    Try
        MsgBox(WebClientx.UploadString(xUri, "POST", txtYourSoap.Text))
    Catch
        MsgBox(Err.Description)
    End Try

如果您收到 400x 的响应,可能无法正常工作,但如果是 500(内部服务器错误),则表示存在通信,您需要调整 Headers,添加新的或重新配置 Content-Type, UTF-XX 等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多