Ich schreibe Java-Code, der Apache HttpClient
Version 4.2.2
verwendet, um eine RESTful 3rd Party API zu treffen. Diese API verfügt über Methoden, die HTTP GET
, POST
, PUT
und DELETE
verwenden. Es ist wichtig zu beachten, dass ich eine 4.x.x-Version und nicht 3.x.x verwende, da sich die API sehr von 3 auf 4 geändert hat. Alle relevanten Beispiele, die ich gefunden habe, waren für eine 3.x.x-Version.Wie Parameter zu allen HttpClient Request-Methoden hinzufügen?
Für alle API-Aufrufe müssen Sie den api_key
als Parameter angeben (unabhängig davon, welche Methode Sie verwenden). Dies bedeutet, dass unabhängig davon, ob ich einen GET, POST oder anderweitig mache, ich diese api_key
angeben muss, damit der Aufruf serverseitig authentifiziert wird.
// Have to figure out a way to get this into my HttpClient call,
// regardless of whether I'm using: HttpGet, HttpPost, HttpPut
// or HttpDelete...
String api_key = "blah-whatever-my-unique-api-key";
So versuche ich herauszufinden, wie HttpClient
mit dem api_key
unabhängig von meiner Anfrage Verfahren zu schaffen (die wiederum hängt von der RESTful API Methode, die ich getroffen bin versucht). Es sieht aus wie HttpGet
nicht einmal Unterstützung der Begriff der Parameter, und HttpPost
verwendet etwas namens HttpParams
; aber auch diese HttpParams
scheinen nur in der 3.x.x-Version von HttpClient
zu existieren.
Also frage ich:
HttpGet
HttpPost
HttpPut
HttpDelete
:
Was die richtige ist, v4.2.2 Art und Weise mein
api_key
String an alle vier zu befestigen/hinzufügen
Vielen Dank im Voraus.
Dank @rboorgapally (+1) - aber ich glaube, das funktioniert nur für 'HttpGet' (Festlegen der Parameter in der Abfragezeichenfolge), und hätte keinen Effekt für' HttpPost', 'HttpPut' oder' HttpDelete'. Obwohl jeder von ihnen einen Konstruktor hat, der eine 'URI' als Argument akzeptiert, glaube ich nicht, dass' URIBuilder' implizit versucht, Abfrage-String-Parameter in 'HttpPost'-POST-Variablen usw. zu konvertieren Nicht-'HttpGet'-Methoden ein URI mit der vollständigen Abfrage-String, ich glaube nicht, dass sie wissen, wie diese Abfrage Zeichenfolge in ein Datenformat konvertieren, die sie wissen, wie man arbeitet. –
Haben Sie versucht, das 'URI'-Objekt mit Parametern an' HttpPost' zu übergeben? Können Sie überprüfen, ob die Parameter automatisch aus dem 'URI' Objekt gesetzt werden? –
Ich möchte nur hinzufügen, dass 'setParameter' den vorhandenen Wert überschreibt. Also wenn man eine 'List'-Variable in URI wie'/search? Q = 1 & q = 2 & y = 3' setzen möchte, so ist hier 'q' eine Liste und der endgültige Wert ist 2 nicht [1,2]. Um dies zu vermeiden, kann man die 'addParameter' Methode des URIBuilders verwenden. Dokumente: http://hc.apache.org/httpcomponents-client-gga/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html#addParameter%28java.lang.String,%20java.lang.String % 29 –