0

So I was trying to connect our SMS (Student Management System) to a government Service or Site. The process requires an authentication token coming from Vanguard. Successfully, I am able to obtain the token... but due to lack of documentation and sample codes in PHP I am having problem communicating to the said service. I was wondering if is it my code that causes the problem or is it my calls that has conflict interfacing to the webservice: Please see code below:

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

The result on the browser that I am seeing is this:

SoapFault exception: [HTTP] Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'. in /var/www/html/usitest/example1.php:73 Stack trace: #0 [internal function]: SoapClient->__doRequest('__soapCall('VerifyUSI', Array) #2 {main}NULL

TylerH
  • 20,799
  • 66
  • 75
  • 101

1 Answers1

0

Your content type is probably caused by the SOAP version.

Try setting the SOAP version to 1.2:

'soap_version' => SOAP_1_2

See SoapClient connection to SoapServer

However, I think there are other issues in your code - particularly with the Vanguard token.

Community
  • 1
  • 1
Ryan
  • 4,594
  • 1
  • 32
  • 35
  • I suspect the security header have the problem? Is there anyone who can provide example on how to successfully interface/ establish handshake to USI service in PHP? – Alexis Dichosa Jul 10 '17 at 05:38