Использование 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)
и связанные вещи.