2015-09-03 63 views
0

我是REST API中的新成員。我正在建立一個測試環境,並試圖在Rest API和客戶端PHP之間進行握手。使用PHP從REST API獲取JSON數據

我的JSON數據是

http://localhost:50417/api/device

的數據是這樣的:

[ 
    {"Truck_ID":1,"Company":"Food Mall","Distance":2000}, 
    {"Truck_ID":2,"Company":"Food Mall","Distance":4000}, 
    {"Truck_ID":3,"Company":"Food Mall","Distance":3050} 
    ] 

我試圖像一個客戶端,使用PHP來獲取數據,並將數據放入數組中。我試圖在客戶端是什麼http://localhost:8080

<?php 
$url = "http://localhost:50417/api/device"; 
$response = file_get_contents($url); 
echo $response; 
?> 

我也試過JS喜歡

<script type="text/javascript"> 
$(document).ready(function(){ 
    $.getJSON("http://localhost:50417/api/device", 
    function(data){ 
      alert (data) // this will show your actual json array 
     }); 
    }); 

</script> 

但無論怎樣我嘗試過,我總是得到一個「不「訪問控制允許來源'標題出現在請求的資源上。「可能是什麼問題呢?客戶端通常如何使用REST API從服務器獲取數據?謝謝。

+1

您可以查看通過'http://本地主機: 50417/api/device'在瀏覽器中? JavaScript可能會給你一個'Access-Control-Allow-Origin'錯誤,但是PHP的'file_get_contents'不應該。用PHP代碼得到什麼錯誤? –

+0

你說得對。 PHP可以看到它。我忘了刪除JS文件,所以我認爲這是一個CORS的問題。謝謝。 – Jaaaaaaay

回答

1

允許跨起源請求

通過將低於線

Header set Access-Control-Allow-Origin "*" 

在.htaccess啓用或從PHP嘗試

<?php 
header('Access-Control-Allow-Origin: *'); 
$url = "http://localhost:50417/api/device"; 
$response = file_get_contents($url); 
echo $response; 
?> 
+0

很確定'Access-Control-Allow-Origin'是一個設置在* server *上的頭文件。 –

+0

另外,很確定PHP不關心從服務器發送的'Access-Control-Allow-Origin'頭。這只是關心CORS請求的JavaScript。他需要顯示他得到的PHP錯誤,因爲它肯定與JavaScript不同。 –

+0

Rocket Hazmat是對的。感謝你們。我不會考慮添加一個「Access-Control-Allow-Origin」到服務器。但Feroz給了我一個想法,顯示沒有PHP的JSON數據。謝謝。 – Jaaaaaaay