php soap客户端连接

时间:2016-08-03 13:31:50

标签: php soap

嗨,我有假肥皂

 SOAP 1.1



POST /ServicePeletalk.asmx HTTP/1.1
Host: 82.80.225.186
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://peletop.co.il/GetProducts"

<?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>
    <GetProducts xmlns="http://peletop.co.il/">
      <query>
        <TerminalNum>string</TerminalNum>
        <ProviderID>int</ProviderID>
        <CardType>All or Virtual or Manual or BillPayment</CardType>
        <Language>Hebrew or Arabic or English</Language>
        <LoadPictures>boolean</LoadPictures>
      </query>
    </GetProducts>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

    <?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>
        <GetProductsResponse xmlns="http://peletop.co.il/">
          <GetProductsResult>
            <Products>
              <clsProduct>
                <ProductIdenfity>string</ProductIdenfity>
                <ProductName>string</ProductName>
                <Description>string</Description>
                <Picture>base64Binary</Picture>
                <Price>double</Price>
                <MaxPrice>double</MaxPrice>
                <CardType>All or Virtual or Manual or BillPayment</CardType>
                <DetailsLink>string</DetailsLink>
              </clsProduct>
              <clsProduct>
                <ProductIdenfity>string</ProductIdenfity>
                <ProductName>string</ProductName>
                <Description>string</Description>
                <Picture>base64Binary</Picture>
                <Price>double</Price>
                <MaxPrice>double</MaxPrice>
                <CardType>All or Virtual or Manual or BillPayment</CardType>
                <DetailsLink>string</DetailsLink>
              </clsProduct>
            </Products>
          </GetProductsResult>
        </GetProductsResponse>
      </soap:Body>
    </soap:Envelope>

SOAP 1.2

以下是SOAP 1.2请求和响应示例。显示的占位符需要替换为实际值。

POST /ServicePeletalk.asmx HTTP/1.1
Host: 82.80.225.186
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
        <GetProducts xmlns="http://peletop.co.il/">
          <query>
            <TerminalNum>string</TerminalNum>
            <ProviderID>int</ProviderID>
            <CardType>All or Virtual or Manual or BillPayment</CardType>
            <Language>Hebrew or Arabic or English</Language>
            <LoadPictures>boolean</LoadPictures>
          </query>
        </GetProducts>
      </soap12:Body>
    </soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
        <GetProductsResponse xmlns="http://peletop.co.il/">
          <GetProductsResult>
            <Products>
              <clsProduct>
                <ProductIdenfity>string</ProductIdenfity>
                <ProductName>string</ProductName>
                <Description>string</Description>
                <Picture>base64Binary</Picture>
                <Price>double</Price>
                <MaxPrice>double</MaxPrice>
                <CardType>All or Virtual or Manual or BillPayment</CardType>
                <DetailsLink>string</DetailsLink>
              </clsProduct>
              <clsProduct>
                <ProductIdenfity>string</ProductIdenfity>
                <ProductName>string</ProductName>
                <Description>string</Description>
                <Picture>base64Binary</Picture>
                <Price>double</Price>
                <MaxPrice>double</MaxPrice>
                <CardType>All or Virtual or Manual or BillPayment</CardType>
                <DetailsLink>string</DetailsLink>
              </clsProduct>
            </Products>
          </GetProductsResult>
        </GetProductsResponse>
      </soap12:Body>
    </soap12:Envelope>

如何在PHP中编写???

我试过

<?
    // Maximum error reporting
    error_reporting(E_ALL);
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);

    $wsdl = 'http://82.80.225.186:8000/ServicePeletalk.asmx?WSDL';

    $trace = true;
    $exceptions = true;
    $client = new SoapClient($wsdl, array( 'trace' => $trace, 'exceptions' => $exceptions));


    $xml_array['TerminalNum'] = 5089 ;
    $xml_array['UserType'] = 'SiteUser';
    $xml_array['Language'] = 'English';
    $xml_array['ConnectionOrDeviceID'] = '879d62-EA47-4520-8A29-EB5981A62DD8';

    try
    {
       $client = new SoapClient($wsdl, array('trace' => $trace, 'exceptions' => $exceptions));
       $response = $client->GetSellerProviders($xml_array);
    }
    catch (Exception $e)
    {
       echo "Error!";
       echo $e -> getMessage ();
       echo 'Last response: '. $client->__getLastResponse();
    }

?>

它不能正常工作

请帮助

1 个答案:

答案 0 :(得分:0)

初看起来,根据您的xml文件,您似乎必须调用$client->GetProducts而不是$client->GetSellerProviders,因为xml文件中有一个名为GetProducts的元素

如果这是一个拼写错误,你真的打电话给$client->GetProducts,那么检查$xml_array结构是否像这样

$xml_array['query']['TerminalNum'] = 5089 ;
$xml_array['query']['UserType'] = 'SiteUser';
$xml_array['query']['Language'] = 'English';
$xml_array['query']['ConnectionOrDeviceID'] = '879d62-EA47-4520-8A29-EB5981A62DD8';

包含query元素,如xml请求示例中所示。

评论更新

我看到请求xml具有以下元素

<TerminalNum>string</TerminalNum>
<ProviderID>int</ProviderID>
<CardType>All or Virtual or Manual or BillPayment</CardType>
<Language>Hebrew or Arabic or English</Language>
<LoadPictures>boolean</LoadPictures>

因此$xml_array变量应该有一个包含这些元素名称的数组,如:

$xml_array['query']['TerminalNum'] = 5089 ;
$xml_array['query']['ProviderID'] = 'SiteUser';
$xml_array['query']['CardType'] = 'som card type';
$xml_array['query']['Language'] = 'English';
$xml_array['query']['LoadPictures'] = 'true';