user1 user1 - 27 days ago 5
PHP Question

Php Soap connection refusal

Guys I have an issue I have been learning soap the last few days, I've been trying to connect to a web service for online store to verify users tv licenses before they can purchase a tv set.

I have written the following code to test the web service provided by TV licenses company.

<?php

$wdsl = "https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl";


$options = array(
'trace' => true,
'exceptions' => true,
'connection_timeout' => 1
);

try{

$client = new SoapClient($wdsl,$options);

$apiauth = array(
'Rquid' => '3600cd32-28b9-4a4f-a522-4326def4a9c2',
'ApiKey' => '5957237e-101c-4ff2-8fdc-4bd6c9393a1d',
'AccountIdentifier' => '9211186012088',
'AccountIdentifierType' => 'SaidNumber');

$header = new SoapHeader('http://tempuri.org/','Auth',$apiauth,true);
$client->__setSoapHeaders($header);
$account = $client->GetAccount();

var_dump($account);

echo "<pre>";
var_dump($client);
echo "</pre>";
}catch (Exception $e) {

echo "Error!";
echo $e->getMessage() . "<br>";
echo 'Last response: ' . $client->__getLastResponse();
}

?>


The wdsl does not require a client certificate, the api key above is for testing only.

The problem I always hit


unable to connect to host



But if I write an invalid function I get an error that the function is invalid for this services, When I use __GetFunctions() I do see the functions in the services, but when I try to use one of them I hit could not connect to host, Can guys help me out to connect to this service.

Answer Source

hopefully this should get you going, I assume that the live wsdl will work correctly without having to call __setLocation()

<?php
$wdsl = "https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc?wsdl";

$options = array(
    'trace' => true,
    'exceptions' => true,
    'connection_timeout' => 1
);

try {
    $client = new SoapClient($wdsl, $options);
    // use https location - the host for http (http://jhb-tvlicweb2.sabc.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc) dosn't exist
    $client->__setLocation('https://secure4.tvlic.co.za/AccountEnquiryService_Test_1.0/AccountEnquiryService.svc');

    // setup parameters
    $arrParams = array(
        'request' => array(
            'Header' => array(
                'Rquid' => '3600cd32-28b9-4a4f-a522-4326def4a9c2',
                'ApiKey' => '5957237e-101c-4ff2-8fdc-4bd6c9393a1d'
            ),
            'AccountIdentifier' => '9211186012088',
            'AccountIdentifierType' => 'SaidNumber'
        )
    );

    // request parameters passed in the body not the header
    $account = $client->GetAccount($arrParams);

    var_dump($account);

    echo "<pre>";
    var_dump($client);
    echo "</pre>";
} catch (\Exception $e) {
    echo "Error!";
    echo $e->getMessage() . "<br>";
    echo 'Last response: ' . $client->__getLastResponse();
}