I am trying to construct a hand rolled HTTP request in order to return a response from what I thought was a fairly simple SOAP web service call. However, I am having trouble constructing the request properly, and am not getting the response I expect.
wsdl
statements: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>
<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>
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>
<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, e.g. Message, Transport, None).
</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
I am pretty sure that I need to include a 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.
Place your soap action in the SOAPAction HTTP header
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With