2011-08-03 6 views
1

リクエスト側でSOAP LigthとPHPを使用している一部のSOAPリクエストを取得しようとしています。 。私は以前はSOAPで作業したことがありません。PHPとSOAP Ligth(PERL)を使用して「ホストに接続できませんでした」というサーバに接続しています

トレースなどを印刷すると、接続しようとしている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; 
} 

何が問題であり、私はそれをどのような方法を修正することができますか? URLをエンコードする必要がありますか?

私は必要と思ったものだけを含めました。何か追加する必要がある場合はお知らせください。私がここに含めることができるログには絶対に何もありません。私はそれを奇妙なものとして見つけます。

私はサーバー側でOpenSUSE/Apacheを、クライアント側でMac/Apache/PHPを使用しています。

ありがとうございます!

+1

ブラウザで 'http://192.168.1.101/otrs/rpc.pl'を開いたときに表示される内容は?なぜこの奇妙なキャラクターがここにいるのですか? – Zyava

+0

ブラウザで開くと、Firefoxはサーバxn - 192-0gau00a.168.1.101を見つけることができません。私はなぜそのようなリンクが見えているのかわかりません、私はそれらの奇妙な文字を追加するために何もしません。 – Nicsoft

+0

同じエラーです(ホストに接続できませんでした)。この奇妙なキャラクターを削除して、もう一度試してみてください。 – Zyava

答えて

3

あなたのURLにUTF-8 BOMがあります。ヘキサエディタを使用してファイルを保存してください( BOMなし)

+0

これは問題を解決しました。どうやってこの種の問題/解決策を見つけるべきでしょうか(私は知っている、Stackoverflow ...)。私はそれをUTF-8のBOMで保存しようとしました。それは良く見えましたが、それでもなお「?左。他のエンコーディングも試しましたが、同じ結果が得られました。私はNetbeansを使用しています、どうすればそれが予期しない文字やエンコーディングを投げないように設定できますか?どうもありがとうございました! – Nicsoft

+0

まあ、それは中間のどこかにあったので、おそらくコピー/ペーストエラー(BOMはたいていドキュメントの_start_にのみ現れる)です。私はNetbeansを使用しませんが、私は彼らがそれを行う設定可能な方法を持っていると仮定します。私はNetbeans専用のフォーラム/リスト、あるいはおそらくsuperuser.comのどちらかを尋ねようとしています。 GoogleはNetbeansのために 'contrib/hexedit'のようなものについて話すようです。 – Wrikken

+0

本当に、私は実際にこのコードをNetbeansにコピーしました。私はそれがこの問題が発生した理由だと思います。私は、コードをコピー/ペーストするときに、より慎重になるでしょう。再度、感謝します。 – Nicsoft