laravel 写的 API 接口,被第三方服务器调用,报 400 Bad Request 错误,如何解决?
因为总收不到第三方发来的数据,所以被迫把接口改的很简单,但是还是收不到,并且报 400 Bad Request 错误,已经各种方式试了三天了,还是解决不了,求大神帮助。
laravel 接口:
public function sendStudentToSchoolMessage(Request $request)
{
$req = $request->input("eventType");
// $req = $request->input("eventType"); // 全部获取不了,尝试获取一个,也不行
// 将接收的数据,写进日志里,为了看是否能接收的到
Log::channel('shangtang_log')->info("这里应该有数据:".$req);
// 对方服务器要求的返回数据格式
return response()->json([
"code" => '200',
"message" => "success",
"data" => ""
]);
}
第三方服务器请求 laravel 接口的方式:
POST application/json
第三方服务器请求 laravel 接口发送的数据格式(这段json大小不到1kb):
{
"messageId": "bf510f8f-8378-42c3-bac5-73c9fd47a12f",
"eventType": 30000,
"data": {
"id": 25,
"userId": 163905,
"userName": "张三",
"abnormalType": 0,
"type": 1,
"ldid": "SPSE-bf85433aa009053492410e0b8b053a74",
"signAvatar": "B1202109221440631628885700608",
"signBgAvatar": "B1202109221440631628894089216",
"docPhoto": "None",
"heatAvatar": "B1202109221440631628906672128",
"createTime": "2021-09-22 18:58:40",
"verifyScore": 0.952231228351593,
"signTimeStr": "2021-09-22 18:58:37",
"idNumber": "zI4DNLx27I/QW+MftiGY2Q==",
"icNumber": "888",
"userIdNumber": "zI4DNLx27I/QW+MftiGY2Q==",
"userIcNumber": "888",
"bodyTemperature": 36.43198,
"mask": 0,
"remark": "",
"signTimeZone": "GMT+08:00",
"entryMode": 1,
"extInfo": "",
"hcStatus": "",
"natResult": "",
"natResultTime": 0
},
"sendTime": 1632308320635
}
在 postman 里模拟请求,报 400 Bad Request 错误。
laravel日志里没有任何内容。
发现如果减少 json 的内容,laravel 接口就能请求到数据。
{
"messageId": "bf510f8f-8378-42c3-bac5-73c9fd47a12f",
"eventType": 30000,
"data": {
"id": 25,
"userId": 163905,
"abnormalType": 0,
"type": 1
},
"sendTime": 1632308320635
}
多一行都不行。郁闷!
求大神给思路,啥原因造成的?也曾经改过 php.ini 里的output_buffering 大小为409600 ,也不行。
最新发现,如果postman 本地测试运行接口,就没问题,本地环境是 laradock(也是 apache) , 线上的是 apache 2.4.41
本地日志里的数据:
[2022-08-28 03:29:24] local.INFO: 这里应该有数据:张三
看一下nginx与php的日志
$request->getContent(); 试试
看看路由是否设置正确
我测试没问题
这个问题 就是明显是参数验证没通过或者不合法
没想到这个问题竟然是无果................
把apache 配置发出来 呀