1

Web サービスを呼び出す PHP コードがあります。ローカル マシンで実行すると完全に動作しますが、リモート サーバー (最終的に存在する場所) で実行しようとすると、次のエラーが発生します。

Warning: simplexml_load_file(http://XXXXXXXXX:8080/symws/rest/standard/searchCatalog?clientID=StorageClient&term1=ocm00576702): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
 in /var/www/ShoppingCart/storage_request_button.php on line 42

私のローカル マシンは OSX を実行しています。サーバーはdebian linuxを実行しています。

この異なる動作の原因は何ですか? サーバーにインストールする必要がある別のパッケージはありますか?

アップデート:

ブラウザに URL を入れると問題なく動作しますが、Linux サーバーから URL を wget しようとすると、400 エラーが発生します。アクセスしているサーバーURLもdebian linuxです。サーバーにファイアウォールはありません。他の場所からのアクセスを許可するようにそのサーバーを構成する必要はありませんでした。

4

5 に答える 5

1

この質問で status = 400 を取り除くことが言及されているので、エラーを抑制しようとすることができます。simplexml_load_file('url', null, LIBXML_NOERROR);

それでもうまくいかない場合は、うまくいかないことがたくさんあります。simplexml_load_fileデバッグするオプションはあまりありません。を使用してみてくださいcurl

<?php
// make request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://XXXXXXXXX:8080/symws/rest/standard/searchCatalog?clientID=StorageClient&term1=ocm00576702"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);   

// handle error; error output
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
  var_dump($output);
} else {

  //load xml
  $xml= simplexml_load_string($output);
}
curl_close($ch);

if (empty($xml)) {
  echo 'Something went wrong';
  exit;
}
?>

アップデート:

これを試して、情報が得られるかどうかを確認してください。

<?php
$content = file_get_contents('http://XXXXXXXXX:8080/symws/rest/standard/searchCatalog?clientID=StorageClient&term1=ocm00576702');
var_dump($http_response_header);
?>
于 2013-06-14T06:56:21.473 に答える
0

私の推測では、URL の形式が正しくありません。

400 コードの意味は次のとおりです。

「構文が正しくないため、サーバーはリクエストを理解できませんでした。クライアントは、変更せずにリクエストを繰り返すべきではありません。」

于 2013-06-11T14:44:00.180 に答える
-1

ファイルがブラウザに直接ロードされると仮定します。CURL で確認し、ブラウザから user-agent をスプーフィングします。クッキー機能も有効にしてみてください。

ここにいくつかの例があります: http://www.electrictoolbox.com/php-curl-user-agent/

于 2013-06-14T12:18:35.997 に答える