首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用laravel4从外部api获取数据

使用laravel4从外部api获取数据
EN

Stack Overflow用户
提问于 2015-09-08 13:10:43
回答 2查看 1.1K关注 0票数 1

我正在尝试使用laravel 4中的Guzzle 4.0从外部API获取数据。

我试过

代码语言:javascript
运行
复制
$client = new \GuzzleHttp\Client();
$response = $client->get('https://openexchangerates.org/api/latest.json?app_id=************');
echo "<pre>";
dd($response->getBody());

--它给了我口吻对象,而不是JSON响应,我在浏览器中直接点击了那个url,它提供了正确的json数据。

响应我从口香糖中得到:

代码语言:javascript
运行
复制
object(GuzzleHttp\Stream\Stream)#151 (6) {
["stream":"GuzzleHttp\Stream\Stream":private]=>
resource(6) of type (stream)
["size":"GuzzleHttp\Stream\Stream":private]=>
NULL
["seekable":"GuzzleHttp\Stream\Stream":private]=>
bool(true)
["readable":"GuzzleHttp\Stream\Stream":private]=>
bool(true)
["writable":"GuzzleHttp\Stream\Stream":private]=>
bool(true)
["uri":"GuzzleHttp\Stream\Stream":private]=>
string(10) "php://temp"
}

有人能告诉我怎样才能得到正确的json数据吗?

提前感谢您的支持。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-08 13:21:34

试着将身体转换成字符串:

代码语言:javascript
运行
复制
dd((string) $response->getBody());

实际上,getBody()方法确实返回一个对象,这是通过设计实现的。如果您尝试将它用作字符串(例如使用echo ),则会自动将其转换为字符串。

但是,在dd()调用中,需要显式转换为字符串,否则将得到对象输出。

这是来自文档的:

可以使用getBody方法检索响应的主体。主体可以用作字符串,可以转换为字符串,也可以用作类似于流的对象。 $body = $response->getBody();//隐式地将主体强制转换为字符串并回显它回送$body;//显式地将主体强制转换为字符串$stringBody = ( string ) $body;

有关更多细节,请参见此处:

http://docs.guzzlephp.org/en/latest/quickstart.html#using-responses

票数 2
EN

Stack Overflow用户

发布于 2015-09-08 13:24:33

如果您的响应确实是JSON,则可以调用响应对象上的json()方法返回JSON数组。

代码语言:javascript
运行
复制
print_r($response->json());

这是在一个调用中进行转换和解析的,我觉得这有点干净。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32458759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档