2016-08-05 7 views
0

ich cURL und REST bin mit einer Datenbank und eine Abfrage Suche zuzugreifen, erhalte ich die folgende Antwort, wenn ich echo $response verwenden:JSON Antwort mit REST GET - PHP

HTTP/1.1 200 OK Date: Fri, 05 Aug 2016 06:53:02 GMT Server: Apache Content-Language: en-US RNT-Time: D=58292 t=1470379982660626 RNT-Machine: 128.65 Transfer-Encoding: chunked Content-Type: application/json { "items": [ { "tableName": "Country", "count": 1, "columnNames": [ "id" ], "rows": [ [ "12" ] ] } ], "links": [ { "rel": "self", "href": "https://test.cust.com/services/rest/connect/v1.3/queryResults?query=select%20ID%20from%20CO.Country%20where%20CO.Country.Country=%27USA%27" }, { "rel": "canonical", "href": "https://test.cust.com/services/rest/connect/v1.3/queryResults" }, { "rel": "describedby", "href": "https://test.cust.com/services/rest/connect/v1.3/metadata-catalog/queryResults", "mediaType": "application/schema+json" } ] } 

ich versuchte JSON_decode() zu verwenden, aber so Bis jetzt habe ich nirgendwohin, wie kann ich meine Parameter hier bekommen? um genauer zu sein, der "ID" -Wert.

+0

Sind Sie auf der Clientseite oder dem Server? d. h. Anfrage ist von Client zu Server-Server oder Server-Server? –

+0

@GoldunoSupport Client-Server – Zame

+0

Anfrage ist durch Ajax? wenn den verwenden \t data = JSON.parse (Daten); wo Daten die Antwort vom Server sind. –

Antwort

1

Wenn ich Sie recht bekommen haben Sie 2 Möglichkeiten:

  • Abschaltzeit Empfang Header curl_setopt($ch, CURLOPT_HEADER, 0)
  • Ihre Antwort brechen von \r\n\r\n erhalten Sie header und body
list($header, $body) = explode("\r\n\r\n", $response, 2) 
+0

Das hat mir sehr geholfen, indem ich den Header entfernte. Jetzt bekam ich eine volle JSON-Antwort, ich fügte hinzu: '$ test = $ res-> items [0] -> rows [0]; echo $ test [0]; ' Ich habe den Zeilenwert, danke – Zame

-2
$response;//Suppose your respond is this. 

$obj = json_decode($response); 

Dann können Sie auf Ihre Parameter zugreifen. Beispiel: $ obj-> Elemente

0

Sie müssen JSON_decode() nicht verwenden.

Verwendung:

$obj = $_POST['items']; // for post 

für get:

$obj = $_GET['items']; 
1

Die Antwort, die scheint hier gebucht wie Antwort-Server an den Client-Browser zu senden,

so haben Sie einige Optionen, um diese Daten zu analysieren

  1. Im Falle dieser Antwort muss mit PHP geparst werden, dann können Sie versuchen, Daten mit parse_str() in PHP zu analysieren, indem Sie folgen.

    if (FALSE !== (stripos($response, '{'))) { 
    
    $data = trim(substr($response, stripos($response, '{'))); 
    
        $data_arr = array(); 
    
        parse_str($data, $data_arr); 
    
        print_R($data_arr); 
    
        //Digging down using parse_str() in php 
    
    } else { 
    
        echo "No data found."; 
    } 
    
  2. Entweder Verwendung Client-Seite Javascript/jquery/Client-seitiges Script json von Antwort auf Browser zu analysieren.

  3. Returning header as array using Curl
+0

OK, ich habe' Array ([{____ "items": _] => Array ([{"tableName": "CO.Country", " count ": 1," columnNames ": [" id "] => wähle ID aus CO.Country wo CO.Country.Land = 'USA' "}, {" rel ":" kanonisch "," href ":" https://test.cust.com/services/rest/connect/v1.3/queryResults "}, {" rel " : "directedby", "href": "https://test.cust.com/services/rest/connect/v1.3/metadata-catalog/queryResults", "mediaType": "application/schema json"}]})) ' Wie kann ich jetzt das ID-Attribut bekommen? – Zame

+0

Dann müssen Sie dipper graben und über Response-Daten iterieren. –

0

Mit Hilfe @evilive, ich konnte es an die Arbeit:

1- wiederum von Headern curl_setopt Empfangen ($ ch, CURLOPT_HEADER, 0)

2- $test=$res->items[0]->rows[0]; echo $test[0];