How to call .Net Web Service method from classic ASP using SOAP

I am trying to call a .NET .NET service from a classic ASP using SOAP. I created the following code as a test and keep returning an empty response group with a 400 Bad Request error. Am I doing something wrong, or can this problem be on the .Net side?

'set up xmlhttp to checkout server Dim oRequest Set oRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") 'setting this option will allow ServerXMLHTTP to ignore the certificate errors it encounters. oRequest.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS ' resolve, connect, send, receive - in milliseconds oRequest.setTimeouts 10000, 10000, 10000, 10000 'set the URL msURL = "[redacted]" msSOAP = "<?xml version=""1.0"" encoding=""utf-8"" ?>" msSOAP = msSOAP & "<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"">" msSOAP = msSOAP & "<SOAP:Body>" msSOAP = msSOAP & "<[Some Service] xmlns=""http://localhost"">" msSOAP = msSOAP & "<MethodName>" msSOAP = msSOAP & "<methodParam1>[some value]</methodParam1>" msSOAP = msSOAP & "<methodParam2>[some value]</methodParam2>" msSOAP = msSOAP & "<methodParam3>[some value]</methodParam3>" msSOAP = msSOAP & "</MethodName>" msSOAP = msSOAP & "</[Some Service]>" msSOAP = msSOAP & "</SOAP:Body>" msSOAP = msSOAP & "</soap12:Envelope>" oRequest.Open "POST", msURL, False oRequest.setRequestHeader "Content-Type", "text/xml" oRequest.setRequestHeader "SOAPMethodName", "[MethodName]" oRequest.setRequestHeader "SOAPAction", "[Some Url]" oRequest.send msSOAP Response.Write oRequest.ResponseBody 
+6
source share
1 answer

The following solution was the answer to my problem. And Philburg, as soon as I really made a good SOAP call, I found that you doubt that he is very right. Type and format were of great importance!

 'set up xmlhttp to checkout server Dim oRequest Set oRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") 'setting this option will allow ServerXMLHTTP to ignore the certificate errors it encounters. oRequest.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS ' resolve, connect, send, receive - in milliseconds oRequest.setTimeouts 10000, 10000, 10000, 10000 'set the URL msURL = "[Service Url]" msSOAP = "<?xml version=""1.0"" encoding=""utf-8"" ?>" msSOAP = msSOAP & "<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">" msSOAP = msSOAP & "<s:Body>" msSOAP = msSOAP & "<[MethodName] xmlns=""[Some Namespace]"">" msSOAP = msSOAP & "<methodParam1>[Some value]</methodParam1>" msSOAP = msSOAP & "<methodParam2>[Some value]</methodParam2>" msSOAP = msSOAP & "<methodParam3>[Some value]</methodParam3>" msSOAP = msSOAP & "</MethodName>" msSOAP = msSOAP & "</s:Body>" msSOAP = msSOAP & "</s:Envelope>" oRequest.Open "POST", msURL, False oRequest.setRequestHeader "Content-Type", "text/xml" oRequest.setRequestHeader "SOAPAction", "[Some Url]" oRequest.send msSOAP 

I removed "? Wsdl" from the URL and changed the envelope a bit, and it works now. I also removed the SoapMethodName header setting.

+2
source

Source: https://habr.com/ru/post/893307/


All Articles