php发送获取请求以获取信息

时间:2017-07-03 08:25:00

标签: php nginx serialization get django-rest-framework

我试图从在nginx服务器上运行的php代码向另一个远程django服务器发送get请求。我希望使用序列化程序在REST API中获取数据。

首先,如果我在本地浏览器中打开此链接:

  

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 个答案:

答案 0 :(得分: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();
?>

如果cUrl正在运行,请搜索结果。