Отправить пользователю в Telegram изображение с компьютера Java
Подскажите, пожалуйста, как можно исправить:
Используя метод sendPhoto Telegram Bot API пытаюсь отправить пользователю (самому себе) изображение по AbsolutePath, но возникает ошибка {"ok":false,"error_code":400,"description":"Bad Request: there is no photo in the request"}.
Ее не возникает при указании URL.
Думал загружать каким-то образом в "облако" и использовать URL, но не разобрался. Также думал об использовании метода InputMediaPhoto, но тоже не смог разобраться и не нашел нормальных примеров. Только начинаю изучение Java, но возникла уже такая, как по мне, непростая задачка.
Мой метод:
private static HttpURLConnection con;
private static String tgToken = "ТОКЕН"; // токен ТГ-бота, подставьте свой
private static int chatId = ID; // id личного чата с ботом в Tg
private static String urlTokenImg = "https://api.telegram.org/bot"+tgToken+"/sendPhoto";
public static void tgScreen() {
img = "C:\screens\screen.png"; // если указать URL картинки, то все хорошо
String urlParameters = "chat_id="+chatId+"&photo="+img;
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
try {
URL url = new URL(urlTokenImg);
con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Java upread.ru client");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
wr.write(postData);
}
StringBuilder content;
try (BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream()))) {
String line;
content = new StringBuilder();
while ((line = br.readLine()) != null) {
content.append(line);
content.append(System.lineSeparator());
}
}
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
con.disconnect();
}
}