2017-06-20 123 views
-1

我是axis2和php的新手。 我需要實現client.php誰將做一些基於端口8282中間件的操作。我的問題是,我的本地主機是8080,我無法訪問中間件。這裏是代碼:SoapFault異常:[HTTP]未知協議。只有http和https是允許的

<?php 
class ScriptSoapClient extends SoapClient { 
    public function __doRequest($request,$location,$action,$version,$one_way=0) { 
     $response=parent::__doRequest($request,$location,$action,$version,$one_way); 
     $response=preg_replace('#^.*(<\?xml.*>)[^>]*$#s','$1',$response); 
     return $response; 
    } 
} 
// | is used as splitting char for arrays 
function runService() { 
    //global $KERNELURL; 
    $KERNELURL="127.0.0.1:8282/axis2/services/MiddleService?wsdl"; $num=func_num_args(); 
    if ($num < 2) return; 

    $service=new ScriptSoapClient(null, array("location"=> $KERNELURL,"uri"=>"http://ws.apache.org/axis2","trace"=>true)); 
    $p[0]=new SoapParam((string)func_get_arg(0),"p1"); 
    $p[1]=new SoapParam((string)func_get_arg(1),"p2"); 
    for ($i=2; $i < $num-1;$i++) { 
     $param=func_get_arg($i); 
     if (is_array($param)) { 
      $data="||ARR||".implode("|",$param); 
     } else { 
      $data=$param; 
     } 
     $p[$i]=new SoapParam((string)$data,"p3"); 
    } 
    $p[$num-1]=new SoapParam((string)func_get_arg($num-1),"p4"); 
    try { 
     $result=$service->__soapCall("run",$p); 
    } catch (SoapFault $e) { 
     echo $e; 
     return "error"; 
    } 
    unset($service); 
    if (is_array($result)) { 
     return $result["return"]; 
    } else { 
     return $result; 
    } 
} 
$res2=runService("Service_addCostume","addCostume","costum1"); 
?> 

這裏是我的錯誤:

SoapFault exception: [HTTP] Unknown protocol. Only http and https are allowed. in C:\xampp\htdocs\Client_addCostume.php:4 Stack trace: 
    #0 C:\xampp\htdocs\Client_addCostume.php(4): SoapClient->__doRequest('__doRequest('__soapCall('run', Array) 
    #3 C:\xampp\htdocs\Client_addCostume.php(41): runService('Service_addCost...', 'addCostume', 'costum1') 
    #4 {main} 
+0

嘗試添加'HTTP:你'$之前//' KERNELURL' – aynber

回答

0

添加一個http://之前你$ KERNELURL