1

ブラウザーにhttp://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx入力して Enter キーを押すと、次の XML 応答が返されます。

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<accountBalance>
    <creditLimit>0.0</creditLimit>
    <quotaEnabled>true</quotaEnabled>
    <value>2.0</value>
</accountBalance>

しかし、PHP 内で同じ URL を試していると、応答 Page not found (おっと! That page does not exist. ) が送信されます。ここに私が試すいくつかの方法があります...

SimpleXML の使用

$content = simplexml_load_file($this->request_uri);

ファイル メソッドの使用

$content = file_get_contents($this->request_uri);

CURL の使用

    // create a new cURL resource
    $ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $this->request_uri);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // grab URL and pass it to the browser
    $content = curl_exec($ch);

    // close cURL resource, and free up system resources
    curl_close($ch);
  • $this->request_uri=ブラウザに貼り付けた同じURL。どこが間違っていますか?これについて私を助けてください。ありがとうございました。
4

1 に答える 1

1

ブラウザからサーバーに転送される情報は、URI だけではありません。

http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx

ブラウザから渡されるその他の情報を渡さずに URI だけを渡すと、通常とは異なる結果が得られます。あなたの場合、異なる結果が得られることは明らかです。

ブラウザーでその URI を要求したときにサーバーに渡されるその他の情報について調べてください。この他の情報は、リクエストライン、リクエストヘッダー、および本文と呼ばれます。GET リクエストでは、リクエストの本文は通常空なので、リクエスト行とヘッダーだけに集中する必要があります。次を参照してください。

デバッグ目的でリクエスト情報全体を表示できるいわゆるネットワーク ツールがブラウザにある場合は、ブラウザの技術ドキュメントに問い合わせてください (たとえば、Chromium にはこれがあり、Firefox には Firebug 拡張機能があります)。

次に、 PHP の HTTP ラッパー コンテキスト オプションDocsまたはCurl 拡張機能を使用してリクエストを簡単に模倣することができます。これは、必要なものを実現するためのオプションDocsの無限の配列です。

于 2012-08-24T16:31:03.013 に答える