0

我有数据:

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>

我需要使用 PHP 向“someURL?WSDL”发送肥皂请求。

有人可以帮忙吗?

4

1 回答 1

1

希望对你有帮助

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

2 启用 SOAP 支持,使用--enable-soap.

示例 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

于 2013-11-07T16:38:02.023 回答