我在PHP中有一个简单的函数,它给了我
HTTP错误500(内部服务器错误):
当我发表评论时,会打印出简单的回声。
这是功能:
error_reporting(E_ALL);
ini_set('display_errors', '1');
function invokeAuthenticationServiceAPI()
{
$json = <<<"JSON"
{
"auth":
{
"username":"foo",
"password":"bar"
}
}
JSON;
$data_string = json_decode($json);
echo $data_string;
/*
$ch = curl_init('https://apirestserverdemo/api');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
echo $result;
*/
}
我在HTML文件中将其称为:
<?php
invokeAuthenticationServiceAPI();
?>
如您所见,我需要将其发送到rest api服务器。但它只会在字符串到json格式化时失败。
我有两个问题:
答案 0 :(得分:2)
您应该检查Web服务器错误日志以获取错误的详细信息,但是根据您发布的代码判断,问题可能是在heredoc JSON;
结束前有空格使用JSON
的时间不应该引用它。
你应该用这个:
$json = <<<JSON
{
"auth":
{
"username":"foo",
"password":"bar"
}
}
JSON; // no spaces before JSON;
而不是:
$json = <<<"JSON"
{
"auth":
{
"username":"foo",
"password":"bar"
}
}
JSON;
虽然我个人会在php中生成一个数组或对象,并使用json_encode
生成正确的输出。
答案 1 :(得分:1)
删除JSON
周围的双引号,并删除使PHP heredoc syntax无效的额外空格
$json = <<<"JSON"
应该是
$json = <<<JSON
像
<?php
$str = <<<JSON
{
"auth":
{
"username":"foo",
"password":"bar"
}
}
JSON;
echo $str;
?>
答案 2 :(得分:0)