2012-04-18 21 views
2

HTTP GETをサーバーに送信するPHPクライアントを実装しようとしています。返された情報とともにJSONオブジェクトを返信します。私は私のPHPスクリプトがそれを受け取った後、JSONをデコードする方法を知っていますが、実際にそれを取得する方法は?HTTPからJSONオブジェクトを受け取る


EDIT:注 - サーバーにHTTP GETを送信し、JSONファイルを生成して送り返します。サーバー上に置かれたファイルではありません。

+2

[cURL](http://php.net/manual/en/book.curl.php) – PeeHaa

+0

関連性があります:http://stackoverflow.com/questions/3592802/php-get-url-content-json -with-curl –

+2

'$ json = json_decode(file_get_contents(" http://server.com/json.php ")); ' –

答えて

6

file_get_contents

$json = file_get_contents('http://somesite.com/getjson.php'); 
+0

これは動作しません。サーバーにHTTP GETを送信する必要があります。このサーバーはJSONファイルを生成して返します。私はそこにアクセスできるファイルだけではありません。そのため、私がこれをしようとすると、「ストリームを開けませんでした」というエラーが表示されます。 – DevinFalgoust

+1

PHPは 'file_get_contents()'がHTTPやその他のプロトコルで取得するように適切に設定されていなければなりません。それはあなたのケースではないかもしれないように聞こえる。 PHPの設定に関する情報を提供できますか?あなたがcURLを持っていれば、それは以前のコメント作成者が述べたように、別の可能性です。 – JMM

+0

これを有効にするには、cURLまたはfile_get_contents(どちらもphp.iniファイルで有効にする必要があります)を使用する必要があります。$ json変数はOkになります。 –

1

ブラウザは、サーバが応答した内容に基づいて異なる動作をチェックしてください。サーバーにリクエストするタイプ(GET、POSTなど)は関係ありませんが、JSONをレスポンスとして返すには、スクリプトにヘッダーを設定して、リクエストを行う必要があります。

header('Content-Type: application/json;charset=utf-8;'); 

そして、例えば、JSON文字列をエコー:

//...populating your result data array here...// 
// Print out the JSON formatted data 
echo json_encode($myData); 

ユーザーエージェントはその後、JSON文字列を取得します。 AJAXは、要求を行った場合、あなたは単にあなたが扱うことができるJavaScriptオブジェクトにその結果を解析することができ、このように:

//...AJAX request here...// 
// Parse result to JavaScript object 
var myData=JSON.parse(XMLHttp.responseText); 

ヘッダ自体必要-really-が、ソートの良い方法ですされていません。 JSON.parse()は、応答を解析することはできません。