代码之家  ›  专栏  ›  技术社区  ›  code-8

在Laravel 5.1中尽情享受

  •  1
  • code-8  · 技术社区  · 7 年前

    我有一个API,可以通过邮递员访问:

    Ex.http://site/api/users.count
    

    我得到了

    {
        "status": 200,
        "message": "Success",
        "data": {
            "count": 8
        }
    }
    

    我试过用口香糖:

    composer require guzzlehttp/guzzle
    
    Using version ^6.3 for guzzlehttp/guzzle                                                                                          
    ./composer.json has been updated                                                                                                  
    Loading composer repositories with package information                                                                            
    Updating dependencies (including require-dev)                                                                                     
      - Installing guzzlehttp/promises (v1.3.1)                                                                                       
        Downloading: 100%                                                                                                             
    
      - Installing psr/http-message (1.0.1)                                                                                           
        Loading from cache                                                                                                            
    
      - Installing guzzlehttp/psr7 (1.4.2)                                                                                            
        Loading from cache                                                                                                            
    
      - Installing guzzlehttp/guzzle (6.3.0)                                                                                          
        Downloading: 100%                                                                                                             
    
    Writing lock file                                                                                                                 
    Generating autoload files                                                                                                         
    > php artisan clear-compiled                                                                                                      
    
    > php artisan optimize                                                                                                            
    
    Generating optimized class loader                                                                                                 
     
    

    包括它

    use GuzzleHttp\Exception\GuzzleException;
    use GuzzleHttp\Client;
    

    使用它

    $client = new Client();
    $res = $client->request('GET','http://site/api/users.count');
    

    后果

    dd($res->getStatusCode());

    我得到了 200

    dd($res->getBody());

    Stream {#662 ▼
      -stream: stream resource @272 ▼
        wrapper_type: "PHP"
        stream_type: "TEMP"
        mode: "w+b"
        unread_bytes: 0
        seekable: true
        uri: "php://temp"
        options: []
      }
      -size: null
      -seekable: true
      -readable: true
      -writable: true
      -uri: "php://temp"
      -customMetadata: []
    }
    

    我得到了

    Response {#664 ▼
      -reasonPhrase: "OK"
      -statusCode: 200
      -headers: array:4 [▼
        "Connection" => array:1 [▼
          0 => "Keep-Alive"
        ]
        "Content-Length" => array:1 [▼
          0 => "61"
        ]
        "Content-Type" => array:1 [▼
          0 => "application/json; charset=utf-8"
        ]
        "Date" => array:1 [▼
          0 => "Wed, 18 Oct 2017 18:01:50 GMT"
        ]
      ]
      -headerNames: array:4 [▼
        "connection" => "Connection"
        "content-length" => "Content-Length"
        "content-type" => "Content-Type"
        "date" => "Date"
      ]
      -protocol: "1.1"
      -stream: Stream {#662 ▼
        -stream: stream resource @272 ▼
          wrapper_type: "PHP"
          stream_type: "TEMP"
          mode: "w+b"
          unread_bytes: 0
          seekable: true
          uri: "php://temp"
          options: []
        }
        -size: null
        -seekable: true
        -readable: true
        -writable: true
        -uri: "php://temp"
        -customMetadata: []
      }
    }
    

    预期结果

    我希望得到类似的结果:

    {
    “状态”:200,
    “message”:“成功”,
    “数据”:{
    “计数”:8
    }
    }
    

    我如何调试它?

    2 回复  |  直到 4 年前
        1
  •  2
  •   ishegg    7 年前

    您可以从响应标题中看到一切正常。状态代码为200, Content-Length 不是0,等等。

    响应的主体在 body 的属性 GuzzleHttp\Psr7\Response 这是一个 GuzzleHttp\Psr7\Stream . 您可以使用 getBody() 方法

    您可以使用 read($n) 阅读 n 或通过强制转换 Stream 到字符串,或者隐式地(通过 echo

    var_dump((string) $res->getBody()); // explicitly
    echo $res->getBody(); // implicitly
    

    供将来参考,您可以使用 debug mode 要查看有关整个请求的更多信息,请执行以下操作:

    $res = $client->request('GET','http://site/api/users.count', ["debug" => true]);
    
        2
  •  0
  •   Casper    7 年前

    你必须使用 $response->getBody(); 你也可以这样做 ->getStatusCode(); 尝试查看他们的文档,有很多选项,但要获取内容,请使用getBody函数

    就你而言 dd($res->getBody());