0

WSセキュリティを使用してJAVAベースのsoapサービスを呼び出しています。しかし、これらのサービスを呼び出そうとすると、無効なセキュリティヘッダーがあるというエラーが発生します。php zendフレームワークを使用してセキュリティヘッダーを作成し、Soapリクエストを作成する方法を教えてください。

4

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