2016-04-01 5 views
1

私は動作させようとしているPHP SoapClient PHPを持っています。 SoapClientは認証し、WSDLを取得できますが、問題はありません。次に、WSDLをエンドポイントとして使用してsoapActionを開始する必要がありますが、ヘッダーが一致する必要があるデモ要求ヘッダーと一致しません。soapActionヘッダーをPHP SoapClientで使用する方法

具体的には、soapActionヘッダーが欠落しています。代わりに、コンテンツタイプ内にアクションパラメータが設定されています。これをどのように変更しますか?

私が生成されるようにしたいヘッダ:

POST /hpq/hpq-service/hpq.wsdl HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "HPQMemberValidationOperation" 
Authorization: Basic bmV0Y2VsbHM6V0Q4c2dLSjg5aEdYenBLYmQ0akhr 
Content-Length: 902 
Host: **** 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 

私が作成していますヘッダ:

POST /hpq/hpq-service/hpq.wsdl HTTP/1.1 
Host: *** 
Connection: Keep-Alive 
User-Agent: PHPSoapClient 
Content-Type: application/soap+xml; charset=utf-8; action="HPQMemberValidationOperation" 
Content-Length: 688 
Authorization: Basic bmV0Y2VsbHM6V0Q4c2dLSjg5aEdYenBLYmQ0akhr 

そして、私は次のPHPコードを経由して、このアクションを呼び出すいます:

$opts = array(
     'http'=>array(
      'user_agent' => 'PHPSoapClient', 
      'header' => "Authorization: Basic " . base64_encode("$username:$password"), 
     ), 
     'ssl' => array(
      'ciphers'=>'RC4-SHA', 
      'verify_peer'=>false, 
      'verify_peer_name'=>false 
     ), 
    ); 
    ini_set("soap.wsdl_cache_enabled", "0"); 

    $context = stream_context_create($opts); 
    $params = array(
     'stream_context'=>$context, 
     'cache_wsdl' => WSDL_CACHE_NONE, 
     'encoding' => 'UTF-8', 
     'verifypeer' => false, 
     'verifyhost' => false, 
     'soap_version' => SOAP_1_2, 
     'trace' => 1, 
     'exceptions' => 1, 
     'connection_timeout' => 180, 
    ); 
    $client = new SoapClient(WSDL_PATH, $params); 

    $response = $client->__soapCall('HPQMemberValidationOperation', array($payload), array('location'=>WSDL_PATH)); 

答えて

1

私はそれがこのラインだったことが判明:

'soap_version' => SOAP_1_2, 

私はSOAP_1_1にそれを変更し、意図したとおり、それは今のsoapActionを生成しています。

関連する問題