2015-09-07 49 views
0

在PHP中使用SoapClient時,遇到了一個問題,我一直無法找到解決方案。PHP SoapClient無法使用代理訪問webservice

我使用WSDL文件的本地副本,我使用這個設置:

$this->client = new \SoapClient(__DIR__ . '/../../some.wsdl', 
         array(
           'proxy_host' => $ip, 
           'proxy_port' => $port, 
           'trace' => 1, 
           'exceptions' => true, 
           'cache_wsdl' => WSDL_CACHE_NONE 
         ) 
        ); 

這給了錯誤:「禁止」時調用:

$this->client->__call($method, $params) 

我已經打過電話__getFunctions()

$this->client->__getFunctions() 

,讓我在WSDL文件中的所有功能的列表。

我錯過了什麼嗎?

回答

0

調試代碼用這樣的:

<?php 
    try{ 
      $client = new SoapClient($wsdl, $params); 
      $out = $client; 
     }catch(Exception $e){ 
      $out = array('error' => $e, 'libxml' => libxml_get_last_error()); 
     }catch(SoapFault $s){ 
      $out = array('error' => $s, 'libxml' => libxml_get_last_error()); 
     } 
    var_dump($out); 
    exit(); 
+0

我嘗試這樣做的代碼,它給出: 對象(SoapClient的)#1(5){[ 「_proxy_host」] =>串(13)「192。 int(80)[「trace」] => int(1)[「_soap_version」] => int(1)[「sdl」] =>資源(4)xxx.xxx.x「[」_proxy_port「] => int (未知)} – Liza

+0

因此,在try {}部分添加__call方法,並參見消息 – Fky

+0

'array(2){[「error」] => object(SoapFault)#2(9){[「message」:protected ] => string(9)「Forbidden」[「string」:「Exception」:private] => string(0)「」[「code」:protected] => int(0)[「file」:protected] = > string(35)「/home/xxx/www/file.php」[「line」:protected] => int(18)[「trace」:「Exce (10)「SoapClient」=「array」(2){[0] => array(4){[「function」] => string(11)「__doRequest」[「class」] = [「type」] => string(2)「 - >」[「args」] => array(5){[0] => string(276)「93048」[1] => string(57)「http ://url/proxy/file.asmx「' – Liza