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   に答える