我有一个PHP Soap请求,我想将其继承到C#。我以前从未使用过Soap,并且对其请求/响应结构非常困惑。
我想在获得编码之前在POSTMAN中对此进行测试。
这是我的邮递员设置:
env := pa.call()
fmt.Printf("Env is %s\n", *env)
这是正在使用的PHP代码,效果很好:
URL=http://example.com/service1.svc?singleWsdl
contentType=text/xml
$client = new SoapClient($wsdlurl, $options);
$customerData = $client->NewCustAddDC($params);
是一个看起来像这样的数组:
$params
我将XML放入POSTMAN的请求正文中,但得到了
<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>
请求正文:
<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>
我到底在做错什么?