2016-06-10 5 views
1

Ich verwende die Httpful PHP library zum Abrufen von Daten aus einer API mit JSON oder XML. Mein Code ist sehr einfach und gibt die Antwort von der URL mit der Standardauthentifizierung zurück.Parse Antwort von XML oder JSON API mit Httpful PHP

$url = "API_URL"; 
$response = \Httpful\Request::get($url) 
    ->expectsXml() // or ->expectsJson() 
    ->authenticateWith('USERNAME', 'PASSWORD') 
    ->send(); 
echo "{$response}"; 

Ich bin erfolgreich in der Anzeige der gesamten Antwortausgabe, aber wie gebe ich eine einzelne Variable zurück?

Zum Beispiel, wenn ich nur Stadt von jeder Person erhalten wollte, wie würde das aussehen? Ich habe versucht echo "{$response->body->city}";, aber es scheint nicht zu funktionieren.

Die XML, die von der api formatiert als solche zurückgegeben wird:

<ArrayOfPERSON xmlns:i="xxx" xmlns="xxx"> 
    <PERSON> 
    <CITY></CITY> 
    <COUNTRY></COUNTRY> 
    <STATE></STATE> 
    <STREET1></STREET1> 
    <STREET2></STREET2> 
    <WORKPHONE></WORKPHONE> 
    <ZIP></ZIP> 
    </PERSON> 
</ArrayOfPERSON> 

und Schalt den Header zu JSON hat die Daten formatiert als:

[ 
    { 
    "STREET1": "" 
    "STREET2": "" 
    "CITY": "" 
    "STATE": "" 
    "ZIP": "" 
    "COUNTRY": "" 
    "WORKPHONE": "" 
    } 
] 
+0

@jszobody Ja, das hat funktioniert! Es scheint auch die Groß- und Kleinschreibung zu beachten. '$ response-> body [0] -> CITY' ist die korrekte Ausgabe. – cul8r

+0

genial, froh zu helfen! Ich habe es gerade als Antwort unten gepostet, können Sie das akzeptieren? – jszobody

Antwort

2

Vom Blick auf Ihre JSON-Struktur, Es scheint, dass die Antwort verschachtelt ist.

Deshalb glaube ich, werden Sie den Körper wie diese zugreifen müssen:

echo $response->body[0]->STREET1; 

Randbemerkung: Es ist immer nützlich, um Ihre $response zu untersuchen, indem nur eine var_dump($response) tun, wenn Sie nicht herausfinden können, wie man es navigiert. Wenn man sich die resultierende Struktur anschaut, wird die Antwort normalerweise klar!