W
W
Walle952020-05-11 15:40:12
Java
Walle95, 2020-05-11 15:40:12

How to overcome server connection errors when launching telegram bot?

When trying to make a simple Telegram bot, I ran into the following problem at startup:

org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error removing old webhook
  at org.telegram.telegrambots.util.WebhookUtils.clearWebhook(WebhookUtils.java:87)
  at org.telegram.telegrambots.bots.TelegramLongPollingBot.clearWebhook(TelegramLongPollingBot.java:25)
  at org.telegram.telegrambots.meta.TelegramBotsApi.registerBot(TelegramBotsApi.java:120)
  at myBotTelegram.Bot.main(Bot.java:27)
Caused by: org.telegram.telegrambots.meta.exceptions.TelegramApiException: Unable to execute deleteWebhook method
  at org.telegram.telegrambots.bots.DefaultAbsSender.sendApiMethod(DefaultAbsSender.java:758)
  at org.telegram.telegrambots.meta.bots.AbsSender.execute(AbsSender.java:56)
  at org.telegram.telegrambots.util.WebhookUtils.clearWebhook(WebhookUtils.java:82)
  ... 3 more
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
  at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:645)
  at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:464)
  at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:360)
  at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)
  at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
  at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422)
  at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)
  at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
  at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1460)
  at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1368)
  at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:437)
  at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436)
  at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
  at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
  at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
  at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
  at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
  at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
  at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
  at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
  at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
  at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
  at org.telegram.telegrambots.bots.DefaultAbsSender.sendHttpPostRequest(DefaultAbsSender.java:772)
  at org.telegram.telegrambots.bots.DefaultAbsSender.sendMethodRequest(DefaultAbsSender.java:768)
  at org.telegram.telegrambots.bots.DefaultAbsSender.sendApiMethod(DefaultAbsSender.java:755)
  ... 5 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:438)
  at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:248)
  at java.base/sun.security.validator.Validator.validate(Validator.java:264)
  at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
  at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
  at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:629)
  ... 29 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
  at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
  at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
  at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:433)
  ... 34 more

Googling these errors led to two main ways to solve this problem:
1. Connecting the telegram through the proxy server of the Tor browser
2. Adding the appropriate certificates to the cacerts (JDK) file.
The implementation of these points did not affect the solution of the problem in any way.
Main programs:
public class Bot extends TelegramLongPollingBot {
    public String getGreeting() {
        return "Hello world.";
    }

    public static void main(String[] args) {
       System.getProperties().put( "proxySet", "true" );
       System.getProperties().put( "socksProxyHost", "127.0.0.1" );
       System.getProperties().put( "socksProxyPort", "9150" );
        //инициализируем API
        ApiContextInitializer.init();

        //создаем объект API
        TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
        //регаем бота
        try {
            telegramBotsApi.registerBot(new Bot());

        } catch (TelegramApiException e){
            e.printStackTrace();
        }

    }
}


What other options might be available to solve this problem?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
B
bergik37, 2020-05-11
@bergik37

Try Windscribe

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question