WSセキュリティを使用してJAVAベースのsoapサービスを呼び出しています。しかし、これらのサービスを呼び出そうとすると、無効なセキュリティヘッダーがあるというエラーが発生します。php zendフレームワークを使用してセキュリティヘッダーを作成し、Soapリクエストを作成する方法を教えてください。
2742 次
1 に答える
1
あなたがあなたのためにトラブルシューティングを試みるために、あなたがソファを持っているコードを投稿することができればそれは役に立ちます。それ以外の場合は、コードを含まない例を次に示します。
Zend Frameworkも使用しており、セキュリティヘッダーをHTTPSサービスに渡す必要がありました。Zend FrameworkのSOAPセキュリティヘッダーはIMOの開発がかなり進んでおり、ベースのPHP CURLの方がはるかにうまく機能し、実装も簡単であることがわかりました。
Authorization:Basic(下記)内で、base64_encodeに気付くでしょう...これは、userID:passwordを渡す場所です。
function makeRequest($requestData){
$str = "site_id=62621&service_name=TestService&fx_request=" . $reqeustData;
$strLength = strlen($str);
$headers = array(
"Authorization: Basic " . base64_encode("12321:123456123456321654"),
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: $strLength",
);
$url = 'https://siteName.Here.com/WebServices/AccountingService';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 80);
curl_setopt($ch, CURLOPT_TIMEOUT, 80);
$response = curl_exec($ch);
if (curl_errno($ch)) {
return "Error: " . curl_error($ch);
} else {
curl_close($ch);
return $response;
}
}
お役に立てれば。
-前の回答に編集、WSSEセキュリティを使用したWSDLのREコメント--
WSSEセキュリティの場合、このZendFrameworkクラスがあります
class Zend_Service_DeveloperGarden_Client_Soap extends Zend_Soap_Client
この機能を持っているのは、あなたが探しているものだと私は信じています
addWsseSecurityTokenHeader
Zend Framework Webサイトの詳細な説明については、このリンクを参照してください。
また、Zend Framework Webサイトで実際のコードファイルコードファイルを表示するには、このリンクを参照してください。
于 2012-05-11T21:51:28.823 に答える