Piszę kod Java, który używa Apache HttpClient
wersja 4.2.2
, aby trafić RESTful 3rd party API. Ten interfejs API ma metody, które wykorzystują HTTP GET
, POST
, PUT
i DELETE
. Ważne jest, aby pamiętać, że używam wersji 4.x.x, a nie 3.x.x, ponieważ interfejs API bardzo się zmienił od 3 do 4. Wszystkie istotne przykłady znalazłem w wersji 3.x.x.Jak dodać parametry do wszystkich metod żądań HttpClient?
Wszystkie wywołania interfejsu API wymagają podania api_key
jako parametru z parametrem (niezależnie od używanej metody). Oznacza to, że niezależnie od tego, czy robię GET, POST czy w inny sposób, muszę podać to api_key
, aby wywołanie mogło uwierzytelnić stronę serwera.
// 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";
Więc próbuję dowiedzieć się, jak zapewnić HttpClient
z api_key
niezależnie od mojej metody żądania (która z kolei zależy od których relaksującego metoda API Próbuję trafić). Wygląda na to, że HttpGet
nawet nie obsługuje pojęcia parametrów, a HttpPost
używa czegoś o nazwie HttpParams
; ale znowu te HttpParams
wydają się istnieć tylko w wersji 3.x.x HttpClient
.
Więc pytam: Jaka jest właściwa, v4.2.2 sposób dołączyć/dodać mój api_key
String na wszystkie cztery:
HttpGet
HttpPost
HttpPut
HttpDelete
Z góry dziękuję.
Dzięki @rboorgapally (+1) - jednak uważam, że działa to tylko dla 'HttpGet' (ustawiając parametry w łańcuchu zapytania) i nie ma żadnego wpływu na' HttpPost', 'HttpPut' lub' HttpDelete'. Mimo że każdy z nich ma konstruktor, który akceptuje "URI" jako argument, nie wierzę, że 'URIBuilder' niejawnie wie, aby przekonwertować parametry ciągu zapytania na, powiedzmy,' POST'owe 'HttpPost', itd. Więc myślę, że będę przechodził Non-'HttpGet' metody URI z pełnym ciągiem kwerendy, nie wierzę, że będą wiedzieć, jak przekonwertować ten ciąg zapytania do formatu danych, z którymi wiedzą, jak pracować. –
Czy próbowałeś przekazać obiekt 'URI' z parametrami do' HttpPost'? Czy możesz sprawdzić, czy automatycznie ustawia parametry z obiektu 'URI'? –
Po prostu dodam, że 'setParameter' nadpisuje istniejącą wartość. Więc jeśli chcemy ustawić zmienną 'List' w URI, jak'/search? Q = 1 & q = 2 & y = 3', to tutaj 'q' jest listą, a jej końcową wartością będzie 2, a nie [1,2]. Aby tego uniknąć, można użyć metody 'addParameter' w URIBuilderze. Dokumenty: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html#addParameter%28java.lang.String,%20java.lang.String % 29 –