-2

このxmlを作成する必要があります:

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  <soapenv:Header>  
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">  
      <wsse:UsernameToken>  
        <wsse:Username>user</wsse:Username>  
        <wsse:Password>password</wsse:Password>  
      </wsse:UsernameToken>  
    </wsse:Security>  
  </soapenv:Header>  
  <soapenv:Body>  
    <vb:getAirportInfo xmlns:vb="http://www.example.com/schema/2005/02/booking.xsd">  
      <airport>BNE</airport>  
      <airport>PPP</airport>  
      <airport>MEL</airport>  
    </vb:getAirportInfo>  
  </soapenv:Body>  
</soapenv:Envelope>  

私は SoapClients を使用するのが初めてで、これを行うにはいくつかの助けが必要です。どうすればいいですか?

4

2 に答える 2

0

PHP から SOAP を正常に使用するには、次の 2 つのものが必要です。

  1. 1 つ目は、PHP にバンドルされている SoapClient および/または SoapServer クラスです。詳細はhttp://php.net/manual/en/book.soap.phpを参照してください。
  2. 2 つ目は WsdlDocument ライブラリです。サービスの WSDL 記述を生成するため、他のクライアントが簡単に使用できます。http://code.google.com/p/wsdldocument/を参照してください

SoapClient の使用は非常に簡単です。一度初期化すると、通常どおりメソッドを呼び出すことができるオブジェクトが取得され、これらの呼び出しがサーバーに転送されます。

SoapServer は、サービスのインスタンスを作成し、handle メソッドを呼び出すだけです。

これには、投稿した XML の手動処理は含まれません。魔法のように単独で動作します (文字通り)。

于 2013-01-29T22:41:39.507 に答える
0

私はそれを考え出した。私は2つのことをする必要がありました。最初に、セキュリティを含むヘッダー セクションを作成する必要がありました。$soap_client = new SoapClient("airportinfo.wsdl", array("トレース" => 1,"例外"=>0));

    $header_part = '
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
            <wsse:UsernameToken>
                <wsse:Username>'.$username.'</wsse:Username>
                <wsse:Password>'.$password.'</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    ';
    $soap_var_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
    $soap_header = new SoapHeader( 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'wsse', $soap_var_header, true );
    $soap_client->__setSoapHeaders($soap_header);

次に、配列を作成し、それを WSDL にある関数に渡す必要がありました。__getFunctions() を使用してこれらのリストを取得しました。次に、このコードを使用して最後のxmlを生成しました

    $airports = array("AirportInfoRQ" => array("AirportCode" => "PPP", "AirportCode" => "BNE"));
    $responce = $soap_client->AxisTransaction($airports);

これにより、上で述べたわずかに異なるxmlが得られましたが、SoapClientを正しく機能させるための正しいxmlでした

于 2013-02-06T23:07:10.233 に答える