Wie kann ich eine GET-Anfrage mit der Spring RestTemplate senden? Andere Fragen haben POST verwendet, aber ich muss GET verwenden. Wenn ich dies ausführe, funktioniert das Programm weiterhin, aber es scheint, dass das Netzwerk verstopft ist, weil es sich in einer AsyncTask befindet. Wenn ich versuche, eine andere Asynctask auszuführen, nachdem ich auf die Schaltfläche für diese geklickt habe, funktionieren sie nicht.
Ich habe es versucht
String url = "https://api.blah.com/2.0/search/cubes?w=jdfkl&whitespace=1";
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("Bearer", accessToken);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //copied this from somewhere else, not sure what its for
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
HttpMessageConverter<String> stringConverter = new StringHttpMessageConverter();
FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
List<HttpMessageConverter<?>> msgConverters = new ArrayList<HttpMessageConverter<?>>();
msgConverters.add(formConverter);
msgConverters.add(new MappingJacksonHttpMessageConverter());
msgConverters.add(stringConverter);
template.setMessageConverters(msgConverters);
//SetSearchResponseData is my custom class to store the incoming JSON
ResponseEntity<SetSearchResponseData> result = template.exchange(url, HttpMethod.GET, request, SetSearchResponseData.class);
//If I was using post, i could have done SetSearchResponseDataresponse = restTemplate.postForObject(url, request, SetSearchResponseData.class);
getForEntity()
, welche AngebotegetHeaders()
undgetBody()
.HttpEntity<?> entity = new HttpEntity<Object>(headers)
Schauen Sie sich JavaDoc for RestTemplate an .
Es gibt die entsprechenden
getForObject
Methoden, die die HTTP-GET-Äquivalente von sindpostForObject
, aber sie scheinen Ihre Anforderungen von "GET mit Headern" nicht zu erfüllen, da es keine Möglichkeit gibt, Header für einen der Aufrufe anzugeben.Mit Blick auf JavaDoc können Sie mit keiner HTTP-GET-spezifischen Methode auch Header-Informationen bereitstellen. Es gibt jedoch Alternativen, von denen Sie eine gefunden haben und verwenden. Mit den
exchange
Methoden können Sie einHttpEntity
Objekt bereitstellen, das die Details der Anforderung darstellt (einschließlich Header). Mit denexecute
Methoden können Sie eine angeben,RequestCallback
aus der Sie die Header beim Aufruf hinzufügen können.quelle
getForObject
es mir angesehen und habe keinen Parameter, mit dem ich die Header angeben kann