Sto scrivendo del codice Java che utilizza Apache HttpClient
versione 4.2.2
per colpire un'API di terze parti RESTful. Questa API ha metodi che utilizzano HTTP GET
, POST
, PUT
e DELETE
. È importante notare che sto usando una versione 4.x.xe non 3.x.x, perché l'API è cambiata molto da 3 a 4. Tutti gli esempi rilevanti che ho trovato sono stati per una versione 3.x.x.Come aggiungere parametri a tutti i metodi di richiesta HttpClient?
Tutte le chiamate API richiedono di fornire il api_key
come parametro (regardles di quale metodo si sta utilizzando). Ciò significa che, a prescindere dal fatto che sto facendo un GET, POST o altro, ho bisogno di fornire questo api_key
in modo che la chiamata autentifichi sul lato server.
// 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";
Così sto cercando di capire come fornire HttpClient
con la api_key
indipendentemente dal mio metodo di richiesta (che a sua volta dipende da quale metodo API RESTful che sto cercando di colpire). Sembra che HttpGet
non abbia nemmeno il supporto la nozione di parametri e HttpPost
utilizza qualcosa chiamato HttpParams
; ma di nuovo questi HttpParams
sembrano solo esistere nella versione 3.x.x di HttpClient
.
Allora io mi chiedo: Qual è il giusto modo per attaccare v4.2.2/aggiungere il mio api_key
String a tutti e quattro:
HttpGet
HttpPost
HttpPut
HttpDelete
Grazie in anticipo.
Grazie a @rboorgapally (+1) - tuttavia credo che funzioni solo per 'HttpGet' (impostando i parametri sulla stringa di query) e non avrebbe alcun effetto per' HttpPost', 'HttpPut' o' HttpDelete'. Sebbene ognuno di questi abbia un costruttore che accetta un 'URI' come argomento, non credo che 'URIBuilder' sappia implicitamente convertire i parametri della stringa di query in, ad esempio, variabili POST di HttpPost, ecc. Quindi, anche se dovrei passare il non -HttpGet' metodi un URI con la stringa di query completa, non credo che sapranno come convertire quella stringa di query in un formato di dati che sanno come lavorare. –
Hai provato a passare l'oggetto 'URI' con i parametri a' HttpPost'? Puoi verificare se imposta automaticamente i parametri dall'oggetto 'URI'? –
Mi piace solo aggiungere che 'setParameter' sostituisce il valore esistente. Quindi se si vuole impostare una variabile 'List' in URI come'/search? Q = 1 & q = 2 & y = 3', quindi qui 'q' è una lista e il suo valore finale sarà 2 non [1,2]. Per evitare questo si può usare il metodo 'addParameter' di URIBuilder. Documenti: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html#addParameter%28java.lang.String,%20java.lang.String % 29 –