2017-09-22 3 views
0

Jungs Ich habe ein Problem Ich habe gelernt Seife die letzten paar Tage, habe ich versucht, eine Verbindung zu einem Web-Service für Online-Shop zu überprüfen Benutzer TV-Lizenzen, bevor sie einen Fernseher kaufen können.Php Soap Verbindung Verweigerung

Ich habe den folgenden Code geschrieben, um den Web-Service von TV-Lizenzen Unternehmen zu testen.

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

?> 

Der WDSL nicht ein Client-Zertifikat erfordert, über die API-Schlüssel ist nur zum Testen.

Das Problem, das ich traf immer

unable to connect to host

Aber wenn ich eine ungültige Funktion schreiben, bekomme ich einen Fehler, dass die Funktion für diese Dienste ungültig ist, wenn ich __GetFunctions() verwenden, ich tun Sehen Sie sich die Funktionen in den Diensten an, aber wenn ich versuche, einen von ihnen zu verwenden, konnte ich keine Verbindung zum Host herstellen. Können mir Leute helfen, sich mit diesem Dienst zu verbinden.

+0

Versuchen Sie, rufen Sie mit de WS mit SoapUI zu verbrauchen, ich habe hier versucht, aber ich bin ein fehlt wenige Informationen. Manchmal kann SoapUI Ihnen einen besseren oder korrekten Ansatz zum Konsumieren eines WS zeigen. –

+0

Danke für das Feedback Ich werde es jetzt überprüfen – user1

+1

@GabrielHeming Ich habe das Tool oben erwähnt und ich kann mit dem Tool verbinden ich werde es erneut versuchen mit php – user1

Antwort

2

hoffentlich bekommen sollte man gehen, nehme ich an, dass die Live-wsdl korrekt funktionieren ohne __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(); 
} 
+0

Testen, im Moment seine Arbeit kann ich verbinden und sehen, ob Benutzer benötigt TV-Lizenz bezahlen. Danke – user1

+0

Jetzt Wie bekomme ich nur die Antwortnachricht? – user1