繁体   English   中英

解析请求,PHP/Laravel

[英]Parsing Request, PHP/Laravel

该API用于门禁设备上报人员通行记录,经我(第三方平台)调用该API到人脸识别终端或人脸识别门禁终端。

调用方向:

人脸识别终端或人脸识别门禁终端向第三方平台调用API。

请求说明:

请求方式:POST 请求地址:/LAPI/V1.0/System/Event/Notification/PersonVerification Content-Type:text/plain

请求示例:

{
    "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, 
                "Data": "…"
            }, 
            "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( $request->getContent() ); 倾倒

似乎我需要从请求的开头和结尾删除""以便 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM