2017-12-15 13 views
0

Ich arbeite mit einer Remote-API, die ich keine Dokumentation habe und ich muss eine GET-Anfrage mit einer JSON-Payload senden, die nicht gesendet wird die ursprüngliche HTTP-Anfrage, scheint aber gleich danach gesendet zu werden.libCurl GET-Anfrage mit Nicht-URL-Parametern (Objekte/Payload)

Das mit dem ursprünglichen Python-Tool durchgeführt wird, um die folgende Anweisung verwendet:

urllib.request.Request(url=url, method='GET', data=bytes(json.dumps(data), 'utf8')) 

Ich habe durch Wireshark gesucht weitere Informationen darüber zu erhalten, und es scheint, die GET-Anforderungen der HTTP-Anforderung zusammengesetzt ist und das JSON-Objekt (beide voneinander verschieden sein):

Wireshark

Meine Frage wäre: Wie kann ich erreichen, das die cURL C-Bibliothek? Ich habe das Handbuch für eine Weile angesehen und es scheint, dass Parameter nicht wie eine POST-Anfrage (CURLOPT_POSTFIELDS) übergeben werden können.

Antwort

1

Ich habe endlich die Lösung für dieses Problem gefunden.

Meine cURL-Anfrage wurde mit der Option CURLOPT_HTTPGET durchgeführt, die nicht mit der Option CURLOPT_POSTFIELD kombiniert werden konnte. Um dies zu beheben, musste ich es durch die CURLOPT_CUSTOMREQUEST Option ersetzen, die es mir erlaubt, jeden Anforderungstyp mit der Option CURLOPT_POSTFIELD zu kombinieren. Dieser Beitrag hat mir geholfen: a raw libcurl JSON PUT request using C