2012-02-08 3 views
3

基本的なPHP/SOAP設定に問題がありますPHP SOAPエラーを返す関数呼び出し

私はPHPでSOAPクライアントを作成して、既存のSOAPサーバーと通信しています。また、WS-Securityも使用します。

私は正常に(認証済み)接続し、次のコードを使用して利用可能な機能の配列を返します__getFunctions呼び出し、作ることができました:

<?php 

$wsdlPath = "https://xxx.xxx.xxx.xxx/services/Service?wsdl"; 

$ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'; 
$token = new stdClass; 
$token->Username = new SOAPVar('xUSERx', XSD_STRING, null, null, null, $ns); 
$token->Password = new SOAPVar('xPASSx', XSD_STRING, null, null, null, $ns); 

$wsec = new stdClass; 
$wsec->UsernameToken = new SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $ns); 

$headers = new SOAPHeader($ns, 'Security', $wsec, true); 

if (!$client) 
{ 
    $client = new SoapClient($wsdlPath); 
    echo "Conn:YES"; 
} 
else 
{ 
    echo "Conn:NO"; 
} 

$client->__setSOAPHeaders($headers); 

try 
{ 
    print_r($client->__getFunctions());  
} 
catch (SoapFault $exception) 
{ 
    print($exception); 
} 

?> 

次の出力(汚いが得られますが、あなたが得ますアイデア):

Conn:YES 
Array (
    [0] => editChannelResponse editChannel(editChannel $parameters) 
    [1] => getDownloadTokenResponse getDownloadToken(getDownloadToken $parameters) 
    [2] => startCallResponse startCall(startCall $parameters) 
    [3] => getCallsResponse getCalls(getCalls $parameters) 
    [4] => endCalendarCallResponse endCalendarCall(endCalendarCall $parameters) 
    [5] => createChannelResponse createChannel(createChannel $parameters) 
    [6] => getArchivesByCallIdsResponse getArchivesByCallIds(getArchivesByCallIds $parameters) 
    [7] => getChannelsResponse getChannels(getChannels $parameters) 
    [8] => createVRRResponse createVRR(createVRR $parameters) 
    [9] => getTemplateResponse getTemplate(getTemplate $parameters) 
    [10] => getTemplatesResponse getTemplates(getTemplates $parameters) 
    [11] => getCallsByStatusResponse getCallsByStatus(getCallsByStatus $parameters) 
    [12] => getCallResponse getCall(getCall $parameters) 
    [13] => startCalendarCallResponse startCalendarCall(startCalendarCall $parameters) 
    [14] => deleteChannelResponse deleteChannel(deleteChannel $parameters) 
    [15] => editVRRResponse editVRR(editVRR $parameters) 
    [16] => deleteVRRResponse deleteVRR(deleteVRR $parameters) 
    [17] => getLiveStreamingsResponse getLiveStreamings(getLiveStreamings $parameters) 
    [18] => getHashedPasswordResponse getHashedPassword(getHashedPassword $parameters) 
    [19] => getVersionResponse getVersion(getVersion $parameters) 
    [20] => endCallResponse endCall(endCall $parameters) 
    [21] => getVRRsResponse getVRRs(getVRRs $parameters) 
    [22] => getNumberOfArchivesResponse getNumberOfArchives(getNumberOfArchives $parameters) 
    [23] => getArchivesResponse getArchives(getArchives $parameters) 
    [24] => getVRRResponse getVRR(getVRR $parameters) 
) 

しかし、私は

print_r($client->__getFunctions()); 
0を交換することにより、(GETVERSION)直接記載されている機能の一つを呼び出そう私は、エラーメッセージ内の任意の有用な情報が表示されない、と私は呼んでいる機能がリストされている利用可能なオプションの一つです

print_r($client->getVersion()); 

私は次のエラー

Conn:YES 
SoapFault exception: [soap:Server] 
Fault occurred while processing. in /var/data/www/xxx/beta/soap.php:29 
Stack trace: #0 [internal function]: SoapClient->__call('getVersion', Array) #1 
/var/data/www/xxx/beta/soap.php(29): SoapClient->getVersion() #2 {main} 

を取得して

私は構文が正しいと信じています。

+0

soap.phpの29行目はどうですか? –

+0

29行目はprint_r($ client-> getVersion())に変更を加えたキーラインです。 –

+0

スタックトレースにこれ以上のものはありませんか? –

答えて

0

あなたはオプションでのSoapClientを初期化しようとすることができます:

$client = new SoapClient($wsdlPath, array("trace" => true, "exceptions" => true)); 

例外が

  • trueある場合は、何らかのエラーがExceptionが発生します。
  • falsesoapFaultメッセージを含む$clientオブジェクトが表示されます。
+0

SOAPリスナーから提供された「利用可能な」関数を呼び出したときにエラーが発生しているので、 –

+0

この引数を追加しても、出力には影響しません。 –

+0

そして空のパラメータでさえ、パラメータでgetVersionを呼び出そうとしましたか? –

1

「手動で」その関数の呼び出しを呼び出せますか?

$response = $client->__doRequest($postdata, 'soaplistenerurl', 'getVersion', 1); 

何が得られますか?

+0

$ postdataの値は何ですか?申し訳ありませんが、これは初めてのSOAPを使用しているので、それは私には馴染みのない領域です。 –

+0

あなたはそこに空のXMLを置くことができます..「」のテスト用です。そして、心配する必要はありません。SOAPはこれまで使用していないと怪物になる可能性があります。特にWebサービスによく慣れていない人は –

+0

です。これは全く出力を生成しないようです。 –

関連する問題