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));