正在连接到服务器,收到“无法连接到主机”;使用PHP和SOAP light (PERL)


Connecting to server getting "Could not connect to host" using PHP and SOAP Ligth (PERL)

我正在努力获得一些SOAP请求工作,在请求端使用SOAP light和PHP,而在我请求信息的服务器上使用PERL。我以前从未使用过SOAP。

当打印跟踪等时,我试图连接的URL看起来很有线:"http://192.168.1.101/otrs/rpc.pl"。我想这可能是问题的一部分(但我知道什么……)。下面是trace:

Fault message: Could not connect to host
Fault code: 0
array(2) {
  [0]=>
  array(4) {
    ["function"]=>
    string(11) "__doRequest"
    ["class"]=>
    string(10) "SoapClient"
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(5) {
      [0]=>
      string(645) "
userpasswordTicketObjectTicketCreateNumber
"
      [1]=>
      string(35) "http://192.168.1.101/otrs/rpc.pl"
      [2]=>
      string(13) "Core#Dispatch"
      [3]=>
      int(1)
      [4]=>
      int(0)
    }
  }
  [1]=>
  array(6) {
    ["file"]=>
    string(54) "/Library/WebServer/Documents/SMICTestProject/index.php"
    ["line"]=>
    int(37)
    ["function"]=>
    string(10) "__soapCall"
    ["class"]=>
    string(10) "SoapClient"
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(2) {
      [0]=>
      string(8) "Dispatch"
      [1]=>
      array(4) {
        [0]=>
        string(8) "user"
        [1]=>
        string(11) "password"
        [2]=>
        string(12) "TicketObject"
        [3]=>
        string(18) "TicketCreateNumber"
      }
    }
  }
}
Fault trace: // Of some reason this ends up after the actual trace
Fault line: 37
下面是生成异常的代码:
    try {
$client = new SoapClient(null, array(
    'location'  => "http://192.168.1.101/otrs/rpc.pl",
    'uri'       => "Core",
    'trace'     => 1,
    'login'     => "user",
    'password'  => "password",
    'style'     => SOAP_RPC,
    'use'       => SOAP_ENCODED
));

$ticketnumber = $client->__soapCall("Dispatch", array("user", "password", "TicketObject", "TicketCreateNumber"));
//Here happens a lot of things, but since this code is never reached I skip including it. 
} catch (SoapFault $fault) {
//trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
echo "Fault message: ".$fault->getMessage()."'n";
echo "Fault code: ".$fault->getCode()."'n";
echo "Fault trace: ".var_dump($fault->getTrace())."'n";
echo "Fault line: ".$fault->getLine()."'n";
echo "Bad SOAP request'n";
echo "REQUEST:'n".$client->__getLastRequest()."'n";
echo "RESPONSE:'n".$client->__getLastResponse()."'n";
echo "</pre>";
exit;
}

问题是什么,我怎么解决它?我应该对URL进行编码吗?

我只是包括我认为是必要的,请让我知道如果我应该添加一些东西。我在这里所包含的日志中绝对没有任何东西是我觉得奇怪的。

我使用OpenSUSE/Apache在服务器端和Mac/Apache/PHP在客户端。

提前感谢!

您的URL中有一个UTF-8 BOM。使用十六进制编辑器将其取出(并保存所有没有 BOM的文件)