Manual SOAP Request

I am trying to create a manually processed HTTP request to return a response from what, in my opinion, was a fairly simple call to the SOAP web service. However, it is difficult for me to create the request properly, and I do not get the response that I expect.


Applicable wsdl instructions:

wsdl Target namespace:

 targetNamespace="http://tempuri.org/" 

Wsdl service

 <wsdl:service name="TrackerService"> <wsdl:port name="BasicHttpBinding_ITrackerService" binding="tns:BasicHttpBinding_ITrackerService"> <soap:address location="http://mydomain.com/TrackerServiceSite/wctest2.TrackerService.svc"/> </wsdl:port> </wsdl:service> 

Wsdl message

 <wsdl:message name="ITrackerService_GetStub_InputMessage"> <wsdl:part name="parameters" element="tns:GetStub" /> </wsdl:message> <wsdl:message name="ITrackerService_GetStub_OutputMessage"> <wsdl:part name="parameters" element="tns:GetStubResponse" /> </wsdl:message> 

wsdl Binding and SOAP operation

 <wsdl:binding name="BasicHttpBinding_ITrackerService" type="tns:ITrackerService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> . . <!—- Omitted for brevity --> . <wsdl:operation name="GetStub"> <soap:operation soapAction="http://tempuri.org/ITrackerService/GetStub" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> 

Expected Return Response

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header /> <s:Body> <GetStubResponse xmlns="http://tempuri.org/"> <GetStubResult xmlns:a=http://schemas.datacontract.org/2004/07/wctest2 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:Password>SOMEPASS</a:Password> <a:Username>SOMEUSER</a:Username> </GetStubResult> </GetStubResponse> </s:Body> </s:Envelope> 

HTTP request:

 POST http://mydomain.com/TrackerServiceSite/wctest2.TrackerService.svc HTTP/1.1 Content-Type: text/xml; charset="utf-8" Content-Length: 297 Host: mydomain.com <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> <GetStub xmlns="http://tempuri.org/"/> </soap:Body> </soap:Envelope> 

HTTP response

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <s:Fault> <faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">a:ActionNotSupported</faultcode> <faultstring xml:lang="en-US"> The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, eg Message, Transport, None). </faultstring> </s:Fault> </s:Body> </s:Envelope> 

I'm sure I need to include soapAction from the wsdl file somewhere in my request, but I'm not sure where to include it. What else am I missing? Any help would be greatly appreciated.

+3
soap wsdl
source share
1 answer

Put soap action in SOAPAction HTTP header

+5
source share

All Articles