阿里云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.2k
2 个回答
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]);
function ossCallback(){
    $data = array("Status"=>"Ok");
    return json(['data' => $data])->contentType("application/json;charset=utf-8");
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏