6

プレーン テキストのユーザー名とパスワードの形式で認証資格情報を必要とする Web サービスに接続する必要があります。

SOAP の基本的な理解があり、NuSOAP を使用してユーザー名やパスワードを必要としない他のオープン Web サービスに接続することができました。

以下が送られてきました。

<?php

// Set up security options
$security_options = array("useUsernameToken" => TRUE);
$policy = new WSPolicy(array("security" => $security_options));

$security_token = new WSSecurityToken(array(
    "user" => "xxx",
    "password" => "xxx",
    "passwordType" => "basic"));

// Create client with options
$client = new WSClient(array("wsdl" => "https://xxx.asmx?wsdl",
    "action" => "http://xxx",
    "to" => "https://xxx",
    "useWSA" => 'submission',
    "CACert" => "cert.pem",
    "useSOAP" => 1.1,
    "policy" => $policy,
    "securityToken" => $security_token));

// Send request and capture response
$proxy = $client->getProxy();

$input_array = array("From" => "2010-01-01 00:00:00",
    "To" => "2010-01-31 00:00:00");

$resMessage = $proxy->xxx($input_array);
?>

いくつかの調査の結果、上記の実装では wso2 が使用されていることがわかりました。wso2 を使用せずにこれを実行できるようにする必要があります。

上記に関するリソース (Google、フォーラムなど) を探すために最善を尽くしましたが、何も見つかりませんでした。SOAP に関するいくつかのチュートリアルを読み、PHP を使用して SOAP クライアントをセットアップできましたが、すべての認証と「ポリシー」について理解できません。

これを達成する方法の説明と、おそらくこれについてさらに読むためのリンクがあれば、私は髪を引き裂いているので、非常に高く評価されます! 理想的には、SOAP 認証のまったくの初心者向けのリソースへのリンクが欲しいです。

ありがとう。PS上記のリンク/資格情報の一部は、プライバシーのためにxxxされている可能性があります.

4

2 に答える 2

11

php で SOAP 拡張機能を有効にしている場合 (php バージョン >= 5.0.1)、SoapClientクラスを使用してリクエストを処理できます。認証するには、ターゲット URL を使用してユーザー名とパスワードをクラスに渡すことができます。

$soapURL = "https://www.example.com/soapapi.asmx?wsdl" ;
$soapParameters = Array('login' => "myusername", 'password' => "mypassword") ;
$soapFunction = "someFunction" ;
$soapFunctionParameters = Array('param1' => 42, 'param2' => "Search") ;

$soapClient = new SoapClient($soapURL, $soapParameters);

$soapResult = $soapClient->__soapCall($soapFunction, $soapFunctionParameters) ;

if(is_array($soapResult) && isset($soapResult['someFunctionResult'])) {
    // Process result.
} else {
    // Unexpected result
    if(function_exists("debug_message")) {
        debug_message("Unexpected soapResult for {$soapFunction}: ".print_r($soapResult, TRUE)) ;
    }
}

呼び出すことができる関数がわからない場合は、ブラウザーでターゲット URL (たとえば、".asmx?wsdl" で終わるもの) を表示できます。呼び出すことができる使用可能な SOAP 関数と、それらの関数の予期されるパラメーターを示す XML 応答を取得する必要があります。

于 2010-10-14T17:26:49.073 に答える
-2

soap_wsse ライブラリを確認してください

于 2011-07-27T02:50:37.583 に答える