0

この問題に関連して多くの質問があることは承知していますが、PHP から Rest Web サービスにデータを送信するという目的のために、特定の要件に直面しています。詳細は上記で説明しましたが、要約すると、データを URL (REST WS) に投稿し、CURLOPT_POSTFIELDS を設定すると、データが要求に追加されません。

シナリオ: モジュールとして実行されている多くの Java Web サービス (REST) があります。

次のようなリンクを使用して、残りのモジュールを直接呼び出すことができます。

http://[MY IP]:8020/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName
http://[MY IP]:8021/system.search.ws.module.ModuleSearch/getResults/jsonp?xmlQuery=myXml

ファイルとデータベースの場合、私の前にコードを管理していたプログラマーは、プロキシ経由でモジュールに接続された gwt を使用していました。例えば:

http://[MY_PROXY_IP]:8013/system.file.ws.module.ModuleFile/getResults/jsonp?fileName=fileName

私のプロキシでは、受信したリクエストの値を出力できます。この場合、GET を使用し、リクエストを次のように出力できます。

GET /system.file.ws.module.ModuleFile/getResults/jsonp?fileName=idc1&folderType=campaign&callback=__gwt_jsonp__.P0.onSuccess&failureCallback=__gwt_jsonp__.P0.onFailure HTTP/1.1

. 現在、私は PHP を介して実行する必要がある検索を担当しています。モジュールへの URL を直接テストしたところ、動作しましたが、プロキシで実行しようとすると動作していないようで、プロキシに到達しましたが、リクエストを印刷すると不完全です。

POST /system.search.ws.module.ModuleSearch/getResults HTTP/1.1

モジュールファイルのようなものを受け取るはずです。phpコードを共有します。すべて問題ないようですが、何が間違っているのかわかりません... CURLOPT_POSTFIELDSでパラメーターを設定すると、文字列はそうではありません設定中

 $url = "http://192.168.3.41:8013/system.search.ws.module.ModuleSearch/getResults"; 
try {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
$rawXml = $_POST['rawXml'];
$rawXml = str_replace("%", "%25", $rawXml);
$rawXml = str_replace("&", "%26", $rawXml);
$rawXml = str_replace("=", "%3D", $rawXml);
echo $rawXml;   
curl_setopt ($ch, CURLOPT_POSTFIELDS,'xmlQuery='.$rawXml);
$info = curl_exec ($ch);
curl_close ($ch);
echo $info;
} catch (Exception $e){
 echo $e->getMessage(); 
}

どうぞよろしくお願いいたします。よろしくお願いします。

4

1 に答える 1

0

長い間、私は答えなしでこれを見ました。しばらく前にこれの失敗を発見しました。この問題が発生したのは、サーバー側に到達したときに、なんらかの理由で気付かなかったバッチ ファイルがコンテンツに追加の行を追加していたためです。つまり、EOF インジケーターとして行ジャンプを使用してデータを読み取っていたので、コンテンツが表示されなかったのです。「\n」文字を見つけるときではなく、最後までリクエストを読み取れるように、プロキシ内のコードを変更する必要がありました。つまり、投稿の内容はすべての場合に設定されていましたが、バッチ処理によってそのデータが破損していました。それが問題だったので、行のジャンプや白い線も考慮して、リーダーが常にファイル全体を読み取るようにすることで解決しました。

よろしく。

于 2014-04-29T22:42:02.787 に答える