SOAP request by PHP


SOAP request by PHP

我有数据:

POST /Reseller.asmx HTTP/1.1
Host: server.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://server/FunctionOnDemand"
<?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:Header>
    <AuthHeader xmlns="http://server/">
      <UserName>string</UserName>
      <Password>string</Password>
    </AuthHeader>
  </soap:Header>
  <soap:Body>
    <OrderServicesExport xmlns="http://server/" />
  </soap:Body>
</soap:Envelope>

我需要将肥皂请求发送到"某个URL?WSDL"使用PHP。

有人可以帮忙吗?

希望对您有所帮助,

1 启用 PHP 扩展。 --enable-libxml

2 启用 SOAP 支持,使用 --enable-soap 配置 PHP。

示例 PHP 代码,

<?php
    $soapClient = new SoapClient("https://soapserver.example.com/blahblah.asmx?wsdl");
    // Prepare SoapHeader parameters
    $sh_param = array(
                'Username'    =>    'username',
                'Password'    =>    'password');
    $headers = new SoapHeader('http://soapserver.example.com/webservices', 'UserCredentials', $sh_param);
    // Prepare Soap Client
    $soapClient->__setSoapHeaders(array($headers));
    // Setup the RemoteFunction parameters
    $ap_param = array(
                'amount'     =>    $irow['total_price']);
    // Call RemoteFunction ()
    $error = 0;
    try {
        $info = $soapClient->__call("RemoteFunction", array($ap_param));
    } catch (SoapFault $fault) {
        $error = 1;
        print("
        alert('Sorry, blah returned the following ERROR: ".$fault->faultcode."-".$fault->faultstring.". We will now take you back to our home page.');
        window.location = 'main.php';
        ");
    }
    if ($error == 0) {       
        $auth_num = $info->RemoteFunctionResult;
        if ($auth_num < 0) {
            ....
            // Setup the OtherRemoteFunction() parameters
            $at_param = array(
                        'amount'        => $irow['total_price'],
                        'description'    => $description);
            // Call OtherRemoteFunction()
            $trans = $soapClient->__call("OtherRemoteFunction", array($at_param));
            $trans_result = $trans->OtherRemoteFunctionResult;
        ....
            } else {
                // Record the transaction error in the database
            // Kill the link to Soap
            unset($soapClient);
        }
      }
     }   
  }
 ?>

基础教程 : http://www.sitepoint.com/web-services-with-php-and-soap-1/

更多信息: http://www.php.net/manual/en/book.soap.php

参考: http://www.appsntech.com/2012/05/how-to-write-soap-web-service-using-php.html