0

phpを使用してSOAPメッセージをサービスに送信しようとしています。
fsockopenでやりたいのですが、コードは次のとおりです。

<?php

$ fp = @fsockopen( "ssl://xmlpropp.worldspan.com"、443、$ errno、$ errstr);

if(!is_resource($ fp)){die('fsockopen呼び出しがエラー番号で失敗しました'。$errno。'。'。$errstr); }

$ soap_out = "POST / xmlts HTTP / 1.1 \ r \ n"; $soap_out。="ホスト:212.127.18.11:8800 \ r \ n"; // $soap_out。="User-Agent:MySOAPisOKGuys \ r \ n"; $soap_out。="Content-Type:text / xml; charset ='utf-8' \ r \ n"; $soap_out。="Content-Length:999 \ r \ n \ r \ n"; $soap_put。="接続:閉じる\ r \ n"; $soap_out。="SOAPAction:\ r \ n"; $soap_out。='Worldspanこれはテストです';

if(!fputs($fp, $soap_out, strlen($soap_out)))
    echo "could not write";
echo "<xmp>".$soap_out."</xmp>";
echo "--------------------<br>";

while (!feof($fp)) 
{
    $soap_in .= fgets($fp, 100);
}

echo "<xmp>$soap_in</xmp>";   

fclose($fp);
echo "ok";

上記のコードはハングします。okと入力している間に削除すると、問題は$soap_inにあると思います。=fgets($ fp、100)

何が起こっているかについてのアイデア

4

2 に答える 2

0

石鹸のアクションにはカールを使用することをお勧めします。http://www.zimbra.com/forums/developers/9890-solved-simple-soap-admin-example-php.html#post52586

于 2010-04-22T07:49:21.573 に答える
0

ソケットを開いて「POST....」を書き込むだけの問題ではありません。可能な応答を解析するには、完全な HTTP スタックが必要です (たとえば、どのような異なるエンコーディングですか? 部分コンテンツ?)。cURL を使用します。

現在失敗している理由は、おそらくリモート システムがキープアライブを使用するように構成されているためです。これも、適切な HTTP スタックを使用することで解決されます。

C.

于 2010-04-22T12:41:35.933 に答える