Использование тега привязки для ссылки на внешний URL в Java - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь отправить сообщение Telegram из приложения Android. Я хочу, чтобы это сообщение содержало гиперссылку, поэтому я использовал parse_mode=html param, но у меня проблема с тегом привязки. Кажется, что java обрабатывает мой URL как локальный путь.

Это код:

String location = "http://www.google.com";
urlString = String.format("https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<chat_id>&parse_mode=html&text=<a href=%s>Location</a>", location);

URL url = new URL(urlString);
URLConnection conn = url.openConnection();

StringBuilder sb = new StringBuilder();
InputStream is = new BufferedInputStream(conn.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String inputLine = "";
while ((inputLine = br.readLine()) != null) {
    sb.append(inputLine);
}

И это ошибка:

java.io.FileNotFoundException:
    https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<chat_id>&parse_mode=html&text=<a href=http://google.com>Location</a>

Как мне написать это сообщение, чтобы ссылка href была обработана как внешний URL?

1 Ответ

1 голос
/ 25 апреля 2020

Ошибка java.io.FileNotFoundException не означает, что она обрабатывается как локальный путь.

Это HTTP 404 Файл не найден . И это ответ от сервера на ваш HTTP-запрос.

Кажется, что сначала для обеспечения правильных <bot_token> и <chat_id> необходимо. И во-вторых, вы должны urlencode этой строки, прежде чем создавать экземпляр объекта URL.

String encodedUrlString = URLEncoder.encode(urlString, "UTF-8");
URL url = new URL(encodedUrlString);
...