У меня есть запрос PHP Soap, который я пытаюсь перенести на C #.Я никогда не использовал Soap раньше, и я очень запутался в его структуре запроса / ответа.
Я пытаюсь проверить это в POSTMAN, прежде чем я получу код.
Вот мои настройки почтальона:
URL=http://example.com/service1.svc?singleWsdl
contentType=text/xml
Вот код PHP, который используется, который прекрасно работает:
$client = new SoapClient($wsdlurl, $options);
$customerData = $client->NewCustAddDC($params);
Здесь $params
- это массив, который выглядит следующим образом:
<NewCustomerAdd>
<InitParameters>
<InitOrderLines>
<InitPartDesc />
<InitPartSKU>test</InitPartSKU>
<InitQuantity>1</InitQuantity>
</InitOrderLines>
<InitOrderLines>
<InitPartDesc />
<InitPartSKU>test</InitPartSKU>
<InitQuantity>1</InitQuantity>
</InitOrderLines>
<InitOrderLines>
<InitPartDesc />
<InitPartSKU>test</InitPartSKU>
<InitQuantity>1</InitQuantity>
</InitOrderLines>
</InitParameters>
<TemplateParameters>
<TemplateOrderLines>
<TemplatePartDesc />
<TemplatePartSKU>test</TemplatePartSKU>
<TemplateQuantity>1</TemplateQuantity>
</TemplateOrderLines>
<TemplateOrderLines>
<TemplatePartDesc />
<TemplatePartSKU>test</TemplatePartSKU>
<TemplateQuantity>1</TemplateQuantity>
</TemplateOrderLines>
<TemplateOrderLines>
<TemplatePartDesc />
<TemplatePartSKU>test</TemplatePartSKU>
<TemplateQuantity>1</TemplateQuantity>
</TemplateOrderLines>
</TemplateParameters>
<PetInfoParameters>
<PetInfoLines>
<DateModified></DateModified>
<PetFirstName>test</PetFirstName>
<PetID>1</PetID>
<PetLastName />
<ServiceRelated />
<Species />
<Weight>1</Weight>
</PetInfoLines>
<PetInfoLines>
<DateModified></DateModified>
<PetFirstName>test</PetFirstName>
<PetID>1</PetID>
<PetLastName />
<ServiceRelated />
<Species />
<Weight>1</Weight>
</PetInfoLines>
</PetInfoParameters>
<SYSPROCustomerID />
<CustomerFirstName>test</CustomerFirstName>
<CustomerLastName>test</CustomerLastName>
<CustomerDesignation />
<CustomerPrimaryEmail>test</CustomerPrimaryEmail>
<CustomerEmail2 />
<CustomerPrimaryPhone>test</CustomerPrimaryPhone>
<CustomerPhone2 />
<CustomerBillToAddress1>test</CustomerBillToAddress1>
<CustomerBillToAddress2>test</CustomerBillToAddress2>
<CustomerBillToCity>test</CustomerBillToCity>
<CustomerBillToState>test</CustomerBillToState>
<CustomerBillToZip>test</CustomerBillToZip>
<CustomerCountry>test</CustomerCountry>
<AuthorizeCustomerProfileID>test</AuthorizeCustomerProfileID>
<AuthorizePaymentProfileID>test</AuthorizePaymentProfileID>
<ShipAddress1>test</ShipAddress1>
<ShipAddress2>test</ShipAddress2>
<ShipCity>test</ShipCity>
<ShipState>test</ShipState>
<ShipZip>test</ShipZip>
<ShipDayofWeek>test</ShipDayofWeek>
<DeliveryInterval>test</DeliveryInterval>
<ShippingCosts>test</ShippingCosts>
<TaxCode />
<ShipVia>test</ShipVia>
<DeliveryNotes>test</DeliveryNotes>
<InitDeliveryDate>test</InitDeliveryDate>
<FirstRegOrderDeliveryDate>test</FirstRegOrderDeliveryDate>
<ReferralType>test</ReferralType>
<ReferralName>test</ReferralName>
<Last4Digits>test</Last4Digits>
<InitialCode>test</InitialCode>
<SpecialInstructions>test</SpecialInstructions>
</NewCustomerAdd>
Я поместил этот XML в тело запроса POSTMAN, но получил
<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 'NewCustAddDC' 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>
тело запроса :
<?xml version="1.0" encoding="utf-8"?>
<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>
<NewCustAddDC>
.....the xml from above goes here......
</NewCustAddDC>
</soap:Body>
</soap:Envelope>
Что именно я делаю неправильно