我正在尝试构建一个端点,该端点使用Slim PHP框架将传递给它的数据转发到API,并且在获取来自Guzzle请求的响应时遇到了麻烦。

$app->map( '/api_call/:method', function( $method ) use( $app ){
    $client = new GuzzleHttp\Client([
        'base_url' => $app->config( 'api_base_url' ),
        'defaults' => [
            'query'   => [ 'access_token' => 'foo' ],
        ]
    ]);

    $request = $client->createRequest( $app->request->getMethod(), $method, [
        'query' => $app->request->params()
    ]);

    var_dump( $client->send( $request )->getBody() );

})->via( 'GET', 'POST', 'PUT', 'PATCH', 'DELETE' )->conditions( [ 'route' => '.+?' ] );`

然后这给了我...
object(GuzzleHttp\Stream\Stream)[59]
  private 'stream' => resource(72, stream)
  private 'size' => null
  private 'seekable' => boolean true
  private 'readable' => boolean true
  private 'writable' => boolean true
  private 'meta' =>
    array (size=6)
     'wrapper_type' => string 'PHP' (length=3)
      'stream_type' => string 'TEMP' (length=4)
      'mode' => string 'w+b' (length=3)
      'unread_bytes' => int 0
      'seekable' => boolean true
      'uri' => string 'php://temp' (length=10)

...而不是我期待的“酷”响应。

如果我只是var_dump $client->sendRequest( $request ),我会得到200 OK,而URL是我期望的http://localhost:8000/test?access_token=foo

我有另一个请求,但仅使用$client->post(...),并且在不向我返回流内容的情况下也可以正常工作。

我已经尝试使用底部的示例(http://guzzle.readthedocs.org/en/latest/http-client/response.html)阅读流,但是这告诉我feof不存在。

有人知道我在这里缺少什么或做错了什么吗?

最佳答案

您正在var_dumping的主体是一个Guzzle流对象。可以将其视为字符串,也可以根据需要读取该对象。 Documentation for Guzzle Stream here

关于php - 没有得到来自Guzzle的预期响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22824117/

10-14 04:57