Skip to content
Advertisement

Parsing Request, PHP/Laravel

This API is used by an access control device to report personnel pass-through records, After me (A third-party platform) called the API to a face recognition terminal or face recognition access control terminal.

Calling direction:

A face recognition terminal or face recognition access control terminal calls the API to a third-party platform.

Request description:

Request method: POST Request URL: /LAPI/V1.0/System/Event/Notification/PersonVerification Content-Type: text/plain

Request example:

{
    "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": ""
            }
        }
    ]
}

I am using Laravel, I got [] when tried $request->all(), below when I dump( $request->getContent() ); dump

Seems like I need to remove "" from beginning and end of request in order to json_decode(), but no matter what string function I used – preg_replace, substring, etc – nothing changed, when I tried $content[0] I got { and NOT ", $content[-1] I got n, $content[-2] I got }

Can anybody point out where I erred ?

Advertisement

Answer

Looks like this is the Content-Type header problem. But it should be a proper solution:

  $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); 

See this Repl for real implementation: Json Parse

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement