Как правильно сформулировать этот php SOAP запрос - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь сгенерировать это, используя php SOAP

POST https://qawebservices.packagingwholesalers.com/TPWXMLService.svc 

Content-Type: application / soap + xml SOAPAction: "http://tempuri.org/ITPWXMLService/GetCatalogData"

<?xml version="1.0" encoding="utf-8" ?> 
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
xmlns:a="http://www.w3.org/2005/08/addressing"> 
<s:Header> 
  <a:Action s:mustUnderstand="1">http://tempuri.org/ITPWXMLService/GetCatalogData</a:Action> 
  <a:ReplyTo> 
    <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> 
  </a:ReplyTo> 
  <a:To s:mustUnderstand="1">https://qawebservices.packagingwholesalers.com/TPWXMLService.svc</a:To> 
</s:Header> 
<s:Body> 
<GetCatalogData xmlns="http://tempuri.org/"> 
<elemRequest> 
<TPW xmlns=""> 
  <Request> 
    <RequestType>PRODUCT</RequestType> 
    <Credentials> 
      <UserKey>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</UserKey> 
      <UserName>YOUR_USER_NAME</UserName> 
      <Password>YOUR_PASSWORD</Password> 
    </Credentials> 
  </Request> 
</TPW> 
</elemRequest> 
</GetCatalogData> 
</s:Body> 

Мой код пока

$url = "https://qawebservices.packagingwholesalers.com/TPWXMLService.svc?wsdl";
    $options = [
    'location' => $url,
    'uri' => $url,
    'trace'=>1,
    'soap_version' => SOAP_1_2,
    'exceptions'=>true,
    'encoding' => 'UTF-8',
    'cache_wsdl'    => WSDL_CACHE_NONE,
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true,
    'connection_timeout' => 180,
    'Credentials'=> array(
                    'UserKey' => 'xxxx',
                    'UserName' => 'xxxxx',
                    'Password' => 'xxxx',
        )
    ];

$client = new SoapClient($url, $options);
$headers = [
   new SoapHeader(
       'http://www.w3.org/2005/08/addressing', 
       'Action', 
       'http://tempuri.org/ITPWXMLService/GetCatalogData',
       $mustUnderstand = true
   ),
   new SoapHeader(
       'http://www.w3.org/2005/08/addressing', 
       'To', 
       'https://qawebservices.packagingwholesalers.com/TPWXMLService.svc',
       $mustUnderstand = true
   ),
   new SoapHeader(
       'http://www.w3.org/2005/08/addressing', 
       'ReplyTo', 
       'http://www.w3.org/2005/08/addressing/anonymous',
   ),
];
$client->__setSoapHeaders($headers);

$params = array(
            'Credentials'=> array(
                'UserKey' => 'xxxx',
                'UserName' => 'xxxxx',
                'Password' => 'xxxx',
    )
);


        $response = $client->__soapCall('PRODUCT');

К сожалению, я застрял на этом этапе и не могу понять, читая, как правильно сформулировать вызов GET для возврата данных о продукте, которыми я являюсь. пытаюсь получить - я впервые использую SOAP, и я чувствую себя действительно глупо

...