VB.net SOAP Webservice небольшая программа - PullRequest
0 голосов
/ 28 ноября 2018

Привет! Я пытаюсь написать небольшую программу на VB.net, которая обновит некоторые данные на нашем сайте Oracle CPQ.По сути, я использовал образец XML, который используется на сайте CPQ, в качестве теста (который работает непосредственно на сайте) и перенес его в программу vb.net.Я получаю сообщение об ошибке 500 «Внутренняя ошибка сервера» в строке 56 Response = Request.GetResponse ()

    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 & "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">"
    SoapStr = SoapStr & "<soapenv:Header/>"
    SoapStr = SoapStr & "<wsse:Security xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"" xmlns:wsu=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"">"
    SoapStr = SoapStr & "<wsse:UsernameToken wsu:Id=""UsernameToken-2"">"
    SoapStr = SoapStr & "<wsse:Username>username</wsse:Username>"
    SoapStr = SoapStr & "<wsse:Password Type=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"">password</wsse:Password>"
    SoapStr = SoapStr & "</wsse:UsernameToken>"
    SoapStr = SoapStr & "</wsse:Security>"
    SoapStr = SoapStr & "</soapenv:Header>"
    SoapStr = SoapStr & "<soapenv:Body>"
    SoapStr = SoapStr & "<bm:modifyParts xmlns:bm=""http://xmlns.oracle.com/cpqcloud/parts"">"
    SoapStr = SoapStr & "<bm:Parts>"
    SoapStr = SoapStr & "<bm:each_record>"
    SoapStr = SoapStr & "<bm:part_number>0000158-01-LIMT-MX-10</bm:part_number>"
    SoapStr = SoapStr & "<bm:description>"
    SoapStr = SoapStr & "<bm:en>OPER - SOAP Test 1</bm:en>"
    SoapStr = SoapStr & "</bm:description>"
    SoapStr = SoapStr & "</bm:each_record>"
    SoapStr = SoapStr & "</bm:Parts>"
    SoapStr = SoapStr & "</bm:modifyParts>"
    SoapStr = SoapStr & "</soapenv:Body>"
    SoapStr = SoapStr & "</soapenv:Envelope>"

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

        Request = WebRequest.Create("https://velaninctest.bigmachines.com/v2_0/receiver/parts")
        Request.Headers.Add("SOAPAction", "https://velaninctest.bigmachines.com/v2_0/receiver/parts")

        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()

        TextBox1.Text = SD2Request

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

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

Не уверен, что я делаю здесь не так.Вы можете проверить WSDL-определение доступных сервисных вызовов: https://velaninctest.bigmachines.com/v2_0/receiver/

Пример с сайта CPQ для тестирования SOAP-вызова

1 Ответ

0 голосов
/ 17 августа 2019

Возможно, вы уже нашли его, но похоже, что вы закрыли тег "" в строке 12 перед его содержимым.Не могу общаться с VB.net (слишком долго), но вызов веб-службы CPQ выглядит нормально.

-Chris

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...