阿里云OSS服务端签名前端JS直传 回调出错 Response body is not valid json format?
经过排查我怀疑是php输出的结果字符编码 和 java接收的字符编码出问题了。我的服务器编码自带的charset=utf-8 不知道java 接收php接口数据时php需求做什么编码处理。function ossCallback(){
header("Content-Type: application/json;;charset=utf-8");
$data = array("Status"=>"Ok");
return json_encode($data);
}
这个代码输出的数据,我用自己的电脑mac 抓包,数据是没有问题的.用windows抓包的时候 就出现乱码了。
回复
1个回答
test
2024-07-03
Response body is not valid json format
提示 Json 格式不正确,确认 PHP 输出的是 json 字符串。
PHP 将数据转 json 表示:json_encode()
同时 PHP 在输出时设置响应头:
header('Content-type:application/json;charset=utf-8');
// ....
$data = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
return json_encode($data, JSON_UNESCAPED_UNICODE);
// 或者 return echo 任选一个。
echo json_encode($data, JSON_UNESCAPED_UNICODE);
JSON 常量页面
更新:使用 TP5
TP5 框架已经封装好了 json()
方法了。
在控制器里面这样:
public function ossCallback()
{
$data = array("Status" => "Ok");
return json($data);
}
补充
出现乱码, PHP进行 json 编码时,加上参数 JSON_UNESCAPED_UNICODE
。
return json($data)->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容