2017-09-22 110 views
0

夥計們我有一個問題過去幾天我一直在學習soap,我一直試圖連接到網上商店的網絡服務,以驗證用戶電視許可證,然後才能購買電視機。Php肥皂連接拒絕

我寫了下面的代碼來測試電視授權公司提供的網絡服務。

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

?> 

wdsl不需要客戶端證書,上面的api密鑰僅用於測試。

的問題,我總是打

unable to connect to host

但如果我寫一個無效的功能我得到一個錯誤,該功能是此服務的無效,當我使用__GetFunctions()我做請參閱服務中的功能,但是當我嘗試使用其中一個功能時,無法連接到主機,可以幫助我連接到此服務。

+0

嘗試使用與了SoapUI德WS,我在這裏試過,但我缺少一個很少的信息。有時SoapUI可以向您展示一種更好的或正確的消費WS的方法。 –

+0

感謝您的反饋,我現在會檢查它 – user1

+1

@GabrielHeming我使用了上述工具,我可以連接使用該工具,我會再次嘗試使用PHP – user1

回答

2

希望這應該讓你去,我以爲活wsdl將正常工作,而不必調用__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

測試,目前它的工作,我可以連接,看看用戶需要支付電視費。謝謝 – user1

+0

現在我怎樣才能得到響應信息? – user1