问题描述
访问控制设备使用此API来报告人员通过记录,在我(第三方平台)之后,我将该API称为面部识别终端或面部识别访问控制终端。
呼叫方向:
面部识别终端或面部识别访问控制终端将API调用到第三方平台。
请求说明:
请求方法:POST 请求网址:/LAPI/V1.0/System/Event/Notification/PersonVerification 内容类型:文本/纯文本
请求示例:
{
"Reference": "204.2.1.20:5118/LAPI/V1.0/System/Event/Subscription/0","Seq": 5,"DeviceCode": "210235C3R13202000093","Timestamp": 1564735558,"NotificationType": 1,"FaceInfoNum": 1,"FaceInfoList": [
{
"ID": 5,"Timestamp": 1564707615,"CapSrc": 1,"FeatureNum": 0,"FeatureList": [
{
"Featureversion": "","Feature": ""
},{
"Featureversion": "","Feature": ""
}
],“Temperature”: 36.5,“MaskFlag”: 1,"PanoImage": {
"Name": "1564707615_1_86.jpg","Size": 101780,"Data": "…"
},"FaceImage": {
"Name": "1564707615_2_86.jpg","Size": 35528,"FaceArea": {
"LeftTopX": 4981,"LeftTopY": 3744,"RightBottomX": 8250,"RightBottomY": 5583
}
}
],"CardInfoNum": 0,"CardInfoList": [ ],"GateInfoNum": 0,"GateInfoList": [ ],"libmatInfoNum": 1,"libmatInfoList": [
{
"ID": 5,"LibID": 3,"LibType": 4,"MatchStatus": 2,"MatchPersonID": 0,"MatchFaceID": 0,"MatchPersonInfo": {
"PersonName": "","Gender": 0,"CardID": "","IdentityNo": ""
}
}
]
}
我正在使用Laravel,在尝试$ request-> all()时得到了[],下面是我dump( $request->getContent() );
时得到的
dump
似乎我需要从请求的开头和结尾删除""
才能转换为json_decode(),但是无论我使用什么字符串函数-preg_replace,substring等-当我尝试$ content时都没有任何改变[0]我得到{
而不是"
,$ content [-1]我得到\n
,$ content [-2]我得到}
有人可以指出我犯了错吗?
解决方法
看起来是Content-Type
标头问题。但这应该是一个适当的解决方案:
$find = ['/"""/','/\\\n/','/“/','/”/'];
$replace = ['','','"','"'];
$output = preg_replace($find,$replace,$your_input);
// now the $output is ready to be decoded
$decoded = json_decode($output);
$v = var_dump($decoded);
有关实际实现,请参见此Repl:Json Parse