我正在使用PHP连接到API并使用JSON和HTTP POST注册一些信息,但是进展不顺利。
这就是我的所作所为:
我使用json_encode函数创建一个JSON对象:
$name = 'Mike';
$surname = 'Hans';
$fields = array('name' => json_encode($name), 'surname' => json_encode($surname));
$postData = json_encode($flds);
一旦我获得了帖子数据,我只需使用curl连接到API并使用oauth登录,但API响应说:
JSON文本必须是对象或数组(但找到数字,字符串,true, false或null,使用allow_nonref来允许这个)
我已经检查过Google中的allow_nonref,但我找不到任何PHP的内容,我发现只有Perl。有没有人有任何解决方案/建议来解决这个问题?
谢谢!
答案 0 :(得分:1)
您可能需要将整个POST作为JSON发送而不嵌套对json_encode
的调用,如下所示:
$fields = array('name' => $name, 'surname' => $surname);
$postData = json_encode( $fields);
答案 1 :(得分:0)
要跟进@ nickb的回答,请只使用一次json_encode
的调用,它在构建你和我的有效json方面要好得多,并且启动效率更高! (虽然我们正在进入微优化领域)。
您是否尝试过json_encode
的输出并将其放入验证器/格式化程序中,例如:http://jsonviewer.stack.hu/
此外,我认为另一个可能的问题可能是您要发送的标头?接收服务器可能是严格的,并强制您使用正确的“内容类型”。是否有可用的API文档?