2017-11-21 2 views
0

Ich erhalte ein Token von einer externen API über HTTParty.Zugriffsantwort von HTTParty Anforderung

Mein Aufruf sieht wie folgt aus:

token_request = HTTParty.post(@url, body: token_payload.to_json, headers: { 'Content-Type' => 'application/json' }) 

ich folgende JSON zurückerhalten:

{"token":"TBpdV20Fsdbycgmib2B8ZhasVnRb","expiration_utctimestamp":"23123202226","error_code":0,"error_message":null} 

Ich möchte nun den Token-Wert in meine nächste Anforderung zu übergeben.

Wie bekomme ich das Bit "TBpdV20Fsdbycgmib2B8ZhasVnRb" in eine Variable? Meine Vermutung ist, dies aber nicht funktioniert:

token = token_request[:token] 

Dank

+0

Wie wäre es 'token_request [ 'token']'? Wie Sie in der Ausgabe sehen, ist der Schlüssel eine Zeichenfolge, kein Symbol. –

+0

Wenn ich ändern: Token zu "Token" gibt es nur die Zeichenfolge: "Token" im Terminal zurück. Ich hätte gerne den Wert, aber nicht den Schlüssel. – Andy

+0

Ok, was enthält die 'token_request' Variable genau? –

Antwort

0

HTTParty enthält Hilfsmethode, die geparsten JSON als Hash zurückgibt (wenn Server mit entsprechenden Header reagiert). So können Sie Token über Zugang:

token = token_request.parsed_response['token'] 

Ein anderer Weg, in diesem speziellen Fall (Server nicht zurück application/json Header):

token = JSON.parse(token_request.to_s)['token'] 
+0

Danke Nate. Ich habe beides versucht. Im ersten Beispiel bekomme ich das gleiche: eine Zeichenfolge 'Token', aber nicht den Wert. Im zweiten Beispiel bekomme ich Folgendes: [Fehlermeldung] (https://imgur.com/a/KQ8cD) – Andy

+0

Beachten Sie, dass es sich um einen HTTParty POST handelt. Nicht sicher, ob dies einen Unterschied macht. – Andy

+0

Zeigen Sie mir bitte Konsolenausgabe von 'puts token_request.body'. Screenshot ist schwer zu lesen und zu reproduzieren. Es scheint, als ob der Server mit ungültigem JSON antwortet – nattfodd