首页 > 解决方案 > 邮递员中的肥皂请求

问题描述

我有一个 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>

我到底做错了什么?

标签: c#phppostmansoap-client

解决方案


推荐阅读