0

私は PHP プログラミングの初心者ですが、Java で記述された会社の Web サービスを使用する PHP Web サービス クライアントの例を作成する任務を負っています。2種類のサービスがあります。認証が必要なものとそうでないもの。wsdl2php ライブラリを使用して、認証を必要としないサービスと正常に通信しました。私たちの安全なサービスでは、リクエストに次のような SOAP ヘッダーを追加する必要があります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="https://webservices.averittexpress.com/SendWebImageService"> 
    <soapenv:Header xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <ns:authnHeader soapenv:mustUnderstand="0" xmlns:ns="http://webservices.averittexpress.com/authn"> 
            <Username>xxxxxxxx</Username> 
            <Password>xxxxxxxx</Password> 
        </ns:authnHeader> 
    </soapenv:Header> 

私が抱えている問題は、wsdl2php でこれを行う方法、またはそれが可能かどうかさえわからないことです。現在テストに使用しているPHPファイルは次のとおりです。

<?php

require_once 'LTLRateQuoteService.php';

$rqs = new LTLRateQuoteService();
$info = new ShipmentInfo();
$HeaderSecurity = array("authnHeader"=>array("UserName"=>"xxxxxx",
                                             "Password"=>"xxxxxx",));

$header[] = new SoapHeader("http://schemas.xmlsoap.org/soap/encoding",
                           "Header",$HeaderSecurity);

$rqs->__setSoapHeaders($header);

$args = new AvtLTLRateQuoteRequest();
$args->AccountNumber = '1234578';
$args->OriginCity = 'Cookeville';
$args->OriginState = 'TN';
$args->OriginZip = '38501';
$args->DestinationCity = 'Morristown';
$args->DestinationState = 'TN';
$args->DestinationZip = '37814';
$args->ShipDate = '12/12/2011';
$args->Customer = 'S';
$args->PaymentType = 'P';

$info->NumPieces = '1';
$info->NumHandling = '1';
$info->CubicFeet = '1';
$info->Items = '1';
$info->TotalItem = '1';
$info->TotalWeight = '100';
$args->ShipmentInfo = $info;

$grq = new getLTLRate();
$grq->arg0 = $args; 

$response = $rqs->getLTLRate($grq);
$details = $response->return;
print 'Total Freight Charge: ' . $details->TotalFreightCharge . ' ';
?>

このリクエストのヘッダーにユーザー名とパスワードを何らかの方法で添付する必要がありますが、その方法がわかりません。私は wsdl2php サイトを見てきましたが、ライブラリの使用方法に関するドキュメントはほとんどありません。どんな助けでも大歓迎です。

ありがとう、

アンドリュー

4

2 に答える 2

0

wsdl2phpを使用するよりも、PHPの社内SOAP関数を使用する方がうまくいくでしょうか。

http://php.net/manual/en/class.soapclient.php

于 2011-09-15T17:49:17.523 に答える