#java #api #httpurlconnection
#java #API #httpurlconnection
Вопрос:
мне нужно отправить некоторые параметры в API, которые принимают, как кажется, только метод GET … если я присоединю параметры, я не смогу отправить их через метод GET, а с помощью метода POST я получаю 404 — не найдено для вызова…
уже пробовал разные методы присоединения параметров к вызову, но безуспешно
// Documentation - https://coinmarketcap.com/api/documentation/v1/#section/Quick-Start-Guide
String apiKey = "707e6117-e462-4de3-9748-98ab6a467f0c"; // my temp key feel free to use it
HttpURLConnection urlConnection = null;
URL url = new URL("https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("X-CMC_PRO_API_KEY", apiKey);
Map<String, String> parameters = new HashMap<>();
parameters.put("start", "1");
parameters.put("limit", "5000");
parameters.put("convert", "USD");
urlConnection.setDoOutput(true);
DataOutputStream out = new DataOutputStream(urlConnection.getOutputStream());
out.writeBytes(ParameterStringBuilder.getParamsString(parameters));
out.flush();
out.close();
urlConnection.connect();
int status = urlConnection.getResponseCode();
String message = urlConnection.getResponseMessage();
Я хотел бы иметь результаты из API
Ответ №1:
В документации упоминается только метод GET. Добавьте параметры в качестве стандартных параметров HTTP GET:
String apiKey = "707e6117-e462-4de3-9748-98ab6a467f0c";
final String request = "start=1amp;limit=500amp;convert=USD";
HttpURLConnection urlConnection = null;
URL url = new URL("https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?" request);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("X-CMC_PRO_API_KEY", apiKey);
try (BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())))
{
String line = br.readLine();
while (line != null)
{
System.out.println(line);
line = br.readLine();
}
}
Комментарии:
1. Спасибо вам, ребята! кто из вас … это, наконец, ухудшилось 🙂
Ответ №2:
String apiKey = "707e6117-e462-4de3-9748-98ab6a467f0c"; // my temp key feel free to use it
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
RestTemplate restTemplate = new RestTemplate();
String url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest";
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("start", "1");
map.add("limit", "5000");
map.add("convert", "USD");
map.add("ReadTimeout", "10000");
map.add("ConnectTimeout", "15000");
map.add("X-CMC_PRO_API_KEY", apiKey);
System.out.println(map);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
if (response.getStatusCode().is2xxSuccessful()) {
System.out.println(response.getBody());
}