Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Consuming SOAP web service in ASP.NET

I have a SOAP WSDL (found here: https://portal.bsh-partner.com/picenter/server/a2a/) and I am trying to consume the web services.

var soapEnvelope = string.Empty;
soapEnvelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
soapEnvelope += "<soapenv:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:q0=\"http://thexmlhost.com\">";
soapEnvelope += "<q0:Connect>";
soapEnvelope += "<q0:Username>username</q0:Username>";
soapEnvelope += "<q0:Password>password</q0:Password>";
soapEnvelope += "</q0:Connect>";
soapEnvelope += "</soapenv:Body>";
soapEnvelope += "</soapenv:Envelope>";

var xmlHttp = new MSXML2.ServerXMLHTTP40();
xmlHttp.open("POST", "https://thexmlhost.com/", "", "");
xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttp.setRequestHeader("SOAPAction", "thexmlhost.com/");

xmlHttp.send(soapEnvelope);

xmlHttp.waitForResponse(500);

var outXml = xmlHttp.responseText;

The response keeps returning a general HTTP response error page. Any idea how I should be passing my Soap Envelope to get the proper response back from the web service?

like image 516
Lawrence Avatar asked Jul 26 '10 21:07

Lawrence


2 Answers

If you have WSDL, you can create a Service Reference in Visual Studio and it will generate a proxy class for you. Unless I am missing some fine point in your question, it would be a lot more reliable, and much easier, to implement and use.

Hope that helps.

like image 60
Kieren Johnstone Avatar answered Nov 02 '22 02:11

Kieren Johnstone


I just noticed that you are using this code on the server side.


This is not the way to consume web services in .NET. Use the "Add Service Reference" command in Visual Studio to create proxy classes that will allow you to very easily consume the service.

See How to Consume a Web Service for an example, as well as http://msdn.microsoft.com/wcf/.

Also, never use string manipulation techniques when working with XML. Briefly, the rules for strings and for XML are different. .NET has several XML APIs to work with XML, and they all know the rules.

like image 21
John Saunders Avatar answered Nov 02 '22 00:11

John Saunders