2016-12-21 1 views
0

So versuchte ich, unsere SMS (Student Management System) mit einem Regierungsdienst oder einer Website zu verbinden. Der Prozess erfordert ein Authentifizierungstoken von Vanguard. Erfolgreich, ich bin in der Lage, das Token zu erhalten ... aber wegen Mangel an Dokumentation und Beispielcodes in PHP habe ich Probleme beim Kommunizieren mit dem besagten Dienst. Ich frage mich, ob es mein Code, der das Problem verursacht, oder ist es meine Anrufe, die Konflikte Anbindung an den Webservice hat: Siehe Code unten:Zugriff auf USI Webservice mit einem Token von Vanguard gibt einen Fehler zurück

<?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); 

Das Ergebnis auf dem Browser, die ich zu sehen bin, ist dies:

SoapFault-Ausnahme: [HTTP] Die Nachricht kann nicht verarbeitet werden, da der Inhaltstyp 'text/xml; charset = utf-8 'war nicht der erwartete Typ' application/soap + xml; charset = utf-8 '. in /var/www/html/usitest/example1.php:73 Stapelüberwachung: # 0 [interne Funktion]: Soapclient -> __ doRequest ('__ soapcall (' VerifyUSI‘, Array) # 2 {main} NULL

Vielen dank im Voraus Jungs !!!

+0

Mein Kommentar zur OP Frage weiterleiten ... Jungs, war da jemals ein Fortschritt dabei? Ich habe genau das gleiche Problem, indem ich SOAP 1.2 verwende und einen "Ungültigen SOAP-Header" erhalte, wenn ich das zurückgegebene Token in den Soapheader einspeise. Ich würde gerne wissen, ob du das zur Arbeit hast. Sieht so aus, als hätten nur zwei Leute auf der Welt versucht, dies in PHP zu versuchen :) –

Antwort

0

Ihr Inhaltstyp wahrscheinlich durch die SOAP-Version verursacht wird

Versuchen Sie, die SOAP Version 1.2 Einstellung.

'soap_version' => SOAP_1_2 

SoapClient connection to SoapServer

anzeigen 10

Allerdings denke ich, dass es in deinem Code andere Probleme gibt - insbesondere mit dem Vanguard-Token.

+0

Jungs, war da jemals ein Fortschritt dabei? Ich habe genau das gleiche Problem, indem ich SOAP 1.2 verwende und einen "Ungültigen SOAP-Header" erhalte, wenn ich das zurückgegebene Token in den Soapheader einspeise. Ich würde gerne wissen, ob du das zur Arbeit hast. Sieht so aus, als hätten nur zwei Leute auf der Welt versucht, dies in PHP zu versuchen :) –

+0

Wir haben aufgegeben, nachdem wir versucht hatten, den Java-Code umzukehren. Aber wir werden es später noch einmal versuchen müssen. – Ryan

+0

Ich vermute, die Sicherheit Header haben das Problem? Gibt es jemanden, der ein Beispiel dafür geben kann, wie man einen Handshake zum USI-Dienst in PHP erfolgreich durchführt/herstellt? – Drew

Verwandte Themen