Использование Apache Http Client для запроса POST

Я пытаюсь разработать приложение Java с Gson, чтобы использовать внешний API для получения простого перевода текста. Ниже приведен код и вывод. Я использовал свой ключ API в указанном месте для ключа API в URL-адресе HTTP-сообщения. Не могли бы вы помочь мне заставить это работать? Большое спасибо.

// КОД

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("URL");

StringEntity input = new StringEntity(json);
input.setContentType("application/json");
post.setEntity(input);
HttpResponse response = client.execute(post);
System.out.println(response.getStatusLine());  

//ВЫХОД

HTTP/1.1 415 Unsupported Media Type

1 ответ

Решение

Как видите, вы получили 404 Not Found ответ от сервера. Часто это означает, что вы отправляете запрос на неправильный URL.

Вы должны использовать https версию запроса, как показано в документации. Таким образом, правильный URL выглядит так: https://translate.yandex.net/api/v1.5/tr.json/translate?lang=en-ru&key=API-KEY,

редактировать

Что касается второго вопроса, попробуйте добавить заголовок для вашего сообщения.

post.addHeader("Content-Type", "application/json");

Редактировать 2

Я посмотрел в документации, и они не используют тело в запросе. Просто добавьте текст в URL, как это:

https://translate.yandex.net/api/v1.5/tr.json/translate?text=live&lang=en-ru&key=API-KEY`

Не забудьте удалить установочный объект, я имею в виду удалить post.setEntity(input) и связанные вещи.

Другие вопросы по тегам