2017-07-03 180 views
0

我想從運行在nginx服務器上的php代碼發送請求到另一個遠程django服務器。我期望使用序列化器在REST API中獲取數據。php發送獲取請求信息

首先,如果我打開我的本地瀏覽器鏈接:

http://192.168.2.0:8000/myapp/documents/

我會得到:

HTTP 200 OK 
Allow: GET, POST, HEAD, OPTIONS 
Content-Type: application/json 
Vary: Accept 

[ 
    { 
     "id": "000e3588-9544-4df6-a589-cc0166242b5b", 
     "docfile": "/media/documents/2017/06/30/DSC03623.JPG" 
    }, 
    { 
     "id": "3dc6be9f-8659-41d8-8282-b64662032da6", 
     "docfile": "/media/documents/2017/06/30/DSC03611_9KWbftQ.JPG" 
    }, 
    { 
     "id": "28eacb2d-0798-46e9-b63e-10ff704482ce", 
     "docfile": "/media/documents/2017/06/30/DSC03555.JPG" 
    } 
] 

而這也正是我想,當信息我運行我的PHP代碼。

這是我工作的,註釋的部分是以前失敗的嘗試:

<?php 
    echo "<h1>I am here</h1>"; 
    $url = "http://192.168.2.0:8000/myapp"; 

    /*$body = http_parse_message(http_get($url))->body; 
    $body = http_get($url); 
    echo $body;*/ 

    /*$client = new Client($url); 
    $request = $client->newRequest('/documents/'); 
    $response = $request->getResponse(); 
    echo $response->getParsedResponse();*/ 

    $r = new HttpRequest('http://192.168.2.0:8000/myapp/documents/', HttpRequest::METH_GET); 
    $r->send(); 
    echo $r->getResponseCode(); 
    if ($r->getResponseCode() == 200) 
    {  
      echo "<h2>we get 200 response</h2>"; 
    }  

?> 

打印任何東西,除了第一回聲上述3次的非

我在這裏

+1

好吧,首先加入一個ELSE給你,如果'else else {echo'actual response ='。 $ R-> getResponseCode(); }'看看你做什麼回來 – RiggsFolly

+0

我加了它並沒有顯示任何內容。 爲什麼我沒有添加一個else語句int首先是因爲我正在監視另一臺PC上的django服務器。當我運行php代碼時,沒有請求到達django。好像沒有創建http連接 –

+0

那麼告訴我們你看到的是在其他服務器上報告的內容 – RiggsFolly

回答

0

好的,終於這是我的代碼:

<?php 
    $ch = curl_init('http://192.168.2.0:8000/myapp/documents/'); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    echo $data; 
?> 

它需要cUrl才能工作。 cUrl通常在PHP中啓用。在結果

<?php 
    phpinfo(); 
?> 

搜索中,如果捲曲的工作:要仔細檢查 運行此代碼爲腳本。