11

私はAmazonPaymentsWebサービスでPHPを使用しています。一部のリクエストで問題が発生しています。アマゾンは本来あるべきエラーを返していますが、それがどうなるかは私に問題を与えています。

Amazonは、エラーに関するメッセージを含むXMLデータを返しますが、HTTP 400(場合によっては404)もスローします。これにより、file_get_contents()はすぐにエラーをスローし、コンテンツを取得する方法がありません。cURLも使用してみましたが、応答が返ってこないのです。

HTTPステータスコードに関係なくXMLを返す方法が本当に必要です。これには、請求要求が失敗する理由についての手がかりを与える重要な「メッセージ」要素があります。

誰かがcURLの例を持っているか、そうでなければ私がこれを行うことができますか?私のすべてのリクエストは現在file_get_contents()を使用していますが、変更することに反対していません。他の誰もがcURLが「正しい」方法だと思っているようです。

4

2 に答える 2

19

ignore_errorsオプションをオンにして、カスタムストリームコンテキスト(関数file_get_contentsの3番目の引数)を定義する必要があります。

于 2010-09-14T15:09:54.383 に答える
18

DoubleThinkの投稿のフォローアップとして、実際の例を次に示します。

$url = 'http://whatever.com';

//Set stream options
$opts = array(
  'http' => array('ignore_errors' => true)
);

//Create the stream context
$context = stream_context_create($opts);

//Open the file using the defined context
$file = file_get_contents($url, false, $context);
于 2010-09-14T15:48:33.703 に答える