在网站上工作并使用steams API返回其CSGO项目的用户广告资源
这是我点击的网址
$response = $this->guzzle->request('GET', "http://steamcommunity.com/profiles/{$communityId}/inventory/json/730/2");
所以在dev / local中,以下
一切正常foreach (json_decode($response->getBody()->getContents(), true)['rgDescriptions'] as $item) {
$inventory[$item['name']] = $item;
}
return $inventory;
但是当我更新我的网站时,它抱怨我的foreach循环的无效参数 - 在var转储之后 - ($ response-> getBody() - > getContents()) - 仅在现场直播网站返回的json数据包含奇怪的时髦东西 - 我一般都是json的新手,但它包含以下内容
"""
00006000\r\n
{"success":true,"rgInventory":{"8161072596":{"id":"8161072596","classid":"1560432042","instanceid":"480085569","amount":"1","pos":1},"8159918836":
和结束块一样
{"internal_name":"normal","name":"Normal","category":"Quality","category_name":"Category"},{"internal_name":"Rarity_Ancient","name":"Extraordinary","category":"Rarity","color":"eb4b4b","category_name":"Quality"}]}},"more":false,"more_start":false}\r\n
00000000\r\n
\r\n
"""
所以这当然是我的foreach打破的原因,因为我的响应的json_decode将返回null而不是assoc数组? (见底部的全部功能!)
我很确定这些是换行符虽然我不确定?它相当烦人我不确定我是否遗漏了我自己的东西或蒸汽的反应,虽然我没看到当我在开发工作正常时它是怎么回事?
我也在研究中遇到了magic_quotes,但我读到他们在php 5.4中被折旧了?我正在运行5.6所以我只能认为必须有一些我缺少的服务器端?
这是我的帮助函数,以供参考
public function getCSGOInventory($communityId)
{
$response = $this->guzzle->request('GET', "http://steamcommunity.com/profiles/{$communityId}/inventory/json/730/2");
$inventory = [];
foreach (json_decode($response->getBody()->getContents(), true)['rgDescriptions'] as $item) {
$inventory[$item['name']] = $item;
}
return $inventory;
}
答案 0 :(得分:1)
前一段时间我遇到了同样的问题。问题是你的json代码中的随机数如00000000和00006000。这看起来像Guzzle中的一个错误。我能够通过安装php-curl包修复它。尝试执行这样的apt-get来解决问题(如果你在像Ubuntu这样的操作系统上):
sudo apt-get install php-curl
您可以在此处找到更多相关信息: https://github.com/guzzle/guzzle/issues/1385