2016-12-21 9 views
0

が返されました。私はSMS(学生管理システム)を政府のサービスまたはサイトに接続しようとしていました。このプロセスでは、Vanguardからの認証トークンが必要です。正常に、私はトークンを取得することができます...しかし、PHPのドキュメントとサンプルコードの不足のため、私は上記のサービスに通信する際に問題が発生しています。それが問題になるか、それは紛争Webサービスへのインターフェースを持っている私の呼び出しで私のコードである場合、私は思っていた:Vanguardのトークンを使用してUSIウェブサービスにアクセスすると、エラー

<?php 
require_once 'VanguardClient.php'; 
$endpoint = 'https://3pt.portal.usi.gov.au/Service/v2/UsiService.svc'; 

function get_sts($endpoint){ 
    $test = true; 

    $auskey_path = 'Keystore.xml'; 
    $auskey_password = 'Password1!'; 

    $v = new VanguardClient($test); 
    $v->loadAuskey($auskey_path, $auskey_password); 

    try { 
     return $v->requestToken($endpoint); 
    } catch (SoapFault $e) { 
     echo "Error1:";  
     echo $e; 
    } 
} 


//get token from Vanguard 
$token  = get_sts($endpoint); 


//create soap client 
try{ 
    $wsdl = 'https://3pt.portal.usi.gov.au/service/V2/UsiService.wsdl'; 
    $client = new SoapClient($wsdl, 
     array(
      'trace' =>1, 
      //'soap_version' => SOAP_1_2, 
      'keep_alive' => false, 
      //'connection_timeout' => 500000,   
      'cache_wsdl' => WSDL_CACHE_NONE 

     ) 
    ); 
} catch (SoapFault $e) { 
    echo "SoapClient Error:<br />";  
    var_dump($e); 
} 

try {  
    $result=$client->__setSoapHeaders($token); 
} catch (SoapFault $e) { 
    echo "__setSoapHeaders:";  
    var_dump($e); 
} 


$data = array( 
    'OrgCode' => '970003', 
    'USI' => 'U6Q8JN6UD9', 
    'FirstName' => 'Myrna', 
    'FamilyName' => 'Macknight', 
    'DateOfBirth' => '1971-04-19' 
); 


try{ 
    $response=$client->__soapCall('VerifyUSI',$data); 

} catch (SoapFault $e) { 
    echo "__soapCall Error:<br />";  
    echo $e; 
} 


var_dump($response); 

私は見ていますブラウザ上の結果はこれです:以下のコードを見てください

SoapFault例外:[HTTP]コンテンツタイプ 'text/xml;が原因でメッセージを処理できません。 charset = utf-8 'は予想されるタイプではありませんでした' application/soap + xml; charset = utf-8 'となります。 /var/www/html/usitest/example1.php:73スタックトレースで:#0 [内部機能]のSoapClient - > __ doRequest( '__ soapCall(' VerifyUSI」、アレイ)#2 {メイン} NULL

事前にみんなに感謝します!!!

+0

私の以下のコメントをOPの質問に移してください...みんな、これについて何か進歩はありましたか?返されたトークンをsoapheaderに渡すときに、SOAP 1.2を使用して「無効なSOAPヘッダー」を取得することと全く同じ問題があります。私はあなたがこれを働かせるかどうか知りたいです。世界で二人だけがPHPでこれを試みようとしているように見えます:) –

答えて

0

あなたのコンテンツタイプは、おそらくSOAPのバージョンによって引き起こされる

は1.2 SOAPのバージョンを設定してみてください:。

'soap_version' => SOAP_1_2 

SoapClient connection to SoapServer

を参照してください。 10

しかし、あなたのコードには他にも問題があると思います。特に、Vanguardトークンがあります。

+0

皆さん、これについて進歩はありましたか?返されたトークンをsoapheaderに渡すときに、SOAP 1.2を使用して「無効なSOAPヘッダー」を取得することと全く同じ問題があります。私はあなたがこれを働かせるかどうか知りたいです。 PHPでこれを試みようとした世界の二人しかいないように見えます:) –

+0

Javaコードをリバースエンジニアリングしようとしたら、あきらめました。しかし、私たちは後でやり直さなければならないでしょう。 – Ryan

+0

セキュリティーヘッダーに問題があると思われますか?どのようにしてPHPのUSIサービスとのハンドシェイクを成功させるかを確立する方法の例を提供できる人はいますか? – Drew

関連する問題