Привет! Я пытаюсь написать небольшую программу на 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-вызова
Возможно, вы уже нашли его, но похоже, что вы закрыли тег "" в строке 12 перед его содержимым.Не могу общаться с VB.net (слишком долго), но вызов веб-службы CPQ выглядит нормально.
-Chris