2012-04-18 52 views
2

接收JSON對象我想實現一個PHP客戶端發送一個HTTP GET來發回一個JSON對象與返回信息的服務器。我知道如何解碼JSON一旦我的PHP腳本收到它,但我怎麼會去實際得到它?從HTTP GET在PHP


編輯:注意 - 我發送服務器一個HTTP GET,它會生成並返回一個JSON文件。它不是坐在服務器上的文件。

+2

[cURL](http://php.net/manual/en/book.curl.php) – PeeHaa 2012-04-18 20:01:34

+0

也許相關:http://stackoverflow.com/questions/3592802/php-get-url-content-json -with捲曲 – 2012-04-18 20:03:03

+2

'$ JSON = json_decode(的file_get_contents( 「http://server.com/json.php」));' – 2012-04-18 20:12:13

回答

6

退房file_get_contents

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

這是行不通的。我必須發送一個HTTP GET到服務器,該服務器生成並返回一個JSON文件。這不僅僅是一個我可以訪問的文件。因此,當我嘗試這樣做時,我收到一條錯誤消息,提示「無法打開流」。 – DevinFalgoust 2012-04-18 20:07:55

+1

爲了'file_get_contents()'來正確配置PHP,以便通過HTTP和其他協議進行檢索,但是如果是這樣,我第二個推薦使用它。這聽起來像它可能不是你的情況。你能提供一些關於你的PHP配置的信息嗎?如前所述,如果你有捲曲,那是另一種可能性。 – JMM 2012-04-18 20:10:45

+0

你必須使用捲曲或的file_get_contents(兩者都需要在php.ini文件中啓用),使他們的工作,那麼你的$ JSON變量都會好的。 – 2012-04-18 20:11:30

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()都可以解析響應。