阿里云OSS服务端签名前端JS直传 回调出错 Response body is not valid json format?

作者站长头像
站长
· 阅读数 8

经过排查我怀疑是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个回答
avatar
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]);
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容