2017-08-18 1 views
0

Ich habe eine externe Anwendung, die eine JSON-Anfrage an meine Anwendung sendet. Ich bekomme folgende JSON:Analysieren einer JSON-Anfrage von einer externen Anwendung

POST /passou HTTP/1.1^M 
Accept-Encoding: gzip,deflate^M 
Connection:  Keep-Alive^M 
Content-Length: 1802^M 
Content-Type: application/json^M 
Cookie:   XSRF-TOKEN=eyJpdiI6IkhqbXFpcEZ2NW1qakhma040eHM5OVE9PSIsInZhbHVlIjoiVklUMTZYbjk5azF5cXlKR0FCQU9GcEthajZqXC9aVjhLTmdsUlwvanRadTF5RTgxTmZ6YzBDQzVRWk5PTVB3YjBaRlArWXhBRlgzdmtJT0xNXC9BeE5oR0E9PSIsIm1hYyI6IjMyNWRhNDUzYmE1NDQ0MjMyNjg2ZTY4NDQyYjdlMDVlNjliZWM0Y2E3ZTI3NDQ1ZWYwMjBjMGNhODMzMzhiNjEifQ%3D%3D; laravel_session=eyJpdiI6InZOWGc4M0ViN0hCRWc2alNkR3dJUHc9PSIsInZhbHVlIjoiNExjWDZSWEtKZ3ZSWGFRRHBUOG1EYU9hS2N4b2ZnQ1ViYjBDV1RGV0JMU2prb3dQY1lkalhzbWsrSmtJZkIyTWZPTUlTak45cWpLZHdnZmhrTnYxZ3c9PSIsIm1hYyI6Ijc2ODZhMDBhZTY5NzhkYjU4Y2VlNGRjZmNiNDlkZjM4OTVlNjMyMmY0MjQ1ODBmYWRkMzY3MGIwYWNkNjI5NjMifQ%3D%3D^M 
Host:   teste.dx7^M 
User-Agent:  Apache-HttpClient/4.5 (Java/1.7.0_79)^M 
^M 
{"version":"2.0","secret":"123","type":"DevicesSeen","data":{"apMac":"00:18:0a:24:00:d0","apFloors":["Terreo"],"apTags":["","Rui","Terreo",""],"observations":[{"ipv4":null,"location":{"lat":-27.591731402769064,"lng":-48.493424756868876,"unc":30.575295563671613,"x":[39.95044703554812],"y":[12.458059471638961]},"seenTime":"2017-08-18T19:58:16Z","ssid":null,"os":"iOS","clientMac":"d8:bb:2c:79:24:9e","seenEpoch":1503086296,"rssi":10,"ipv6":null,"manufacturer":"Apple"},{"ipv4":null,"location":{"lat":-20.36849699812889,"lng":-56.671748659254035,"unc":3311048.709703039,"x":[-1029790.6265194623],"y":[-482370.5916992783]},"seenTime":"2017-08-18T19:57:59Z","ssid":null,"os":null,"clientMac":"68:c4:4d:59:28:a8","seenEpoch":1503086279,"rssi":11,"ipv6":null,"manufacturer":"Motorola Mobility LLC, a..."},{"ipv4":null,"location":{"lat":-27.591760424025242,"lng":-48.49346321647525,"unc":15.882821701125632,"x":[41.68557674077884],"y":[7.795381645650792]},"seenTime":"2017-08-18T19:58:08Z","ssid":null,"os":null,"clientMac":"f4:f5:24:b5:77:23","seenEpoch":1503086288,"rssi":14,"ipv6":null,"manufacturer":"Motorola Mobility LLC, a..."},{"ipv4":null,"location":{"lat":-27.57610415465702,"lng":-48.51125030308867,"unc":3735355.6769782603,"x":[-2192.503073679766],"y":[-1043.3792964455843]},"seenTime":"2017-08-18T19:58:08Z","ssid":null,"os":"Android","clientMac":"50:55:27:af:71:67","seenEpoch":1503086288,"rssi":7,"ipv6":null,"manufacturer":"LG Electronics (Mobile..."},{"ipv4":null,"location":{"lat":-10.41563888340804,"lng":-67.94045451135523,"unc":4288150.094385385,"x":[-2448783.397841856],"y":[-1147028.4594821092]},"seenTime":"2017-08-18T19:58:13Z","ssid":null,"os":"Nexus","clientMac":"40:88:05:97:3d:90","seenEpoch":1503086293,"rssi":15,"ipv6":null,"manufacturer":"Motorola Mobility LLC, a..."}]}} 

Ich versuche, die HTTP-Header loszuwerden, aber ohne Erfolg.

Ich habe versucht:

public function passou_usuario(Request $request) { 
    $apMac = collect($request->data)->toArray(); 
    foreach ($apMac as $t) { 
     if ($t == '00:18:0a:24:0a:20') { 
      $fp = fopen("/opt/rh/httpd24/root/var/www/html/teste/public/log.log", "a"); 
      fwrite($fp, $request. PHP_EOL); 
      fclose($fp); 
     } 
     return 'ok'; 
    } 
} 
+0

Ich stieß auf ein ähnliches Problem, endete ich die Aufspaltung der Anfrage von '\ n', die die JSON-Daten als das letzte Element im Array setzt –

+0

Sind diese Daten von' php: // Eingabe'? – Machavity

+0

Haben Sie '$ request-> all()' versucht? – mimo

Antwort

0

Sie sollten aus dem Antrag nicht Header HTTP analysieren werden zu müssen. Laravel macht das schon für dich.

Alles, was Sie tun müssen, ist die Dokumentation unter retrieving request input, insbesondere den Abschnitt mit dem Titel "Abrufen von JSON-Eingabewerten". Wenn die Daten mit Content-Type: application/json gebucht werden, was Ihrem Beispiel entspricht, können Sie $request->input verwenden, um die JSON-Daten per Schlüssel abzurufen. Um beispielsweise die Daten für den Schlüssel version in dieser Anforderung in Ihrem Controller abzurufen, sollte er im Rückgabewert $request->input('version') enthalten sein.

+0

Das funktioniert gut $ request-> input ('version'), aber wenn ich versuche, Daten -> Beobachtungen ($ request-> input ('data.observations')) zu holen, tut das nicht arbeite nicht. – Roots

+0

Wie lautet die Ausgabe genau aus '$ request-> input ('data.observations')'? Überprüfen Sie auch die Ausgabe von '$ request-> all()' wie zuvor vorgeschlagen, um zu bestätigen, auf welche Daten der Controller zugreifen kann. –

Verwandte Themen