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

“正在连接到服务器”;无法连接到主机";使用PHP和SOAP Ligth(PERL),php,perl,apache,soap,Php,Perl,Apache,Soap,在请求端使用soapligth和PHP,在请求信息的服务器上使用PERL,我正在努力使一些SOAP请求工作。我以前从未用过肥皂 当打印跟踪等信息时,我试图连接的URL看起来是有线的:“http://ï»192.168.1.101/otrs/rpc.pl”。我想这可能是问题的一部分(但我知道什么…)。以下是跟踪: Fault message: Could not connect to host Fault code: 0 array(2) { [0]=> array(4) {

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

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

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;
}
试试看{
$client=新的SoapClient(空,数组(
'位置'=>“http://192.168.1.101/otrs/rpc.pl",
“uri”=>“核心”,
“跟踪”=>1,
'登录'=>“用户”,
“密码”=>“密码”,
'style'=>SOAP\u RPC,
“使用”=>SOAP\u编码
));
$ticketnumber=$client->uu soapCall(“分派”,数组(“用户”,“密码”,“TicketObject”,“TicketCreateNumber”);
//这里发生了很多事情,但由于这段代码从未达到我跳过包括它。
}catch(SoapFault$fault){
//触发器错误(“SOAP错误:(错误代码:{$Fault->faultcode},错误字符串:{$Fault->faultstring})”,E\u用户错误;
回显“故障消息:”.$Fault->getMessage()。“\n”;
回显“故障代码:”.$Fault->getCode().“\n”;
echo“Fault trace:”.var\u dump($Fault->getTrace())。“\n”;
echo“Fault line:”.$Fault->getLine().“\n”;
回显“错误的SOAP请求\n”;
回显“请求:\n”。$client->\uu getLastRequest()。“\n”;
echo“RESPONSE:\n”。$client->\uu getLastResponse()。“\n”;
回声“;
出口
}
问题是什么?我如何解决它?我应该对URL进行编码吗

我包括了我认为必要的内容,如果我需要补充,请告诉我。在任何日志中,我绝对没有任何可以包含在这里的内容,我觉得这本身就很奇怪

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


提前谢谢你

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

当您在浏览器中打开
http://ï»192.168.1.101/otrs/rpc.pl
时会看到什么?为什么会出现这个奇怪的字符?当我在浏览器中打开它时,我发现:Firefox找不到服务器xn--192-0gau00a.168.1.101。我不知道为什么链接看起来像这样,我没有做任何事情来添加这些奇怪的字符。这是相同的错误(无法连接到主机)。尝试删除这个奇怪的角色,然后再试一次。(更新了我上面的评论)。当我删除浏览器中的字符时,Firefox仍然找不到该文件。当有奇怪的字符时,它会抱怨找不到服务器。这就解决了问题。人们该如何找到这种问题/解决方案(我知道,Stackoverflow…)。我试图将其保存为UTF-8,但没有BOM。看起来好多了,但还是留下了一个“?”字。也尝试了其他编码,但结果相同。我正在使用Netbeans,如何配置它,使它不会抛出意外的字符/编码?非常感谢你!它位于中间,所以可能是复制/粘贴错误(BOM通常只出现在文档的开始)。我不使用Netbeans,但我认为它们有可配置的方法来实现。我会尝试询问Netbeans专用论坛/列表或superuser.com。谷歌似乎在谈论类似于Netbeans的
contrib/hexedit
。没错,我实际上是将这段代码复制到了Netbeans中。我想这就是这个问题发生的原因。将来复制/粘贴代码时,我会更加小心。再次感谢。