首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用vertx HttpClient连接到https url时vertx握手失败

使用vertx HttpClient连接到https url时vertx握手失败
EN

Stack Overflow用户
提问于 2016-04-19 07:15:07
回答 2查看 4.8K关注 0票数 0

当我试图连接https url时..。我的ssl握手失败..。我正在使用vertx版本的>>2.1.5,请帮我解决这个问题.我被困在这里,这对我来说很重要

代码语言:javascript
运行
复制
 This code is working fine, giving me proper response..

     URL url = new  URL("https://bugzilla.mozilla.org/rest/bug/707428/comment");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("accept", "application/json");
    InputStream is=conn.getInputStream();
    InputStreamReader isr=new InputStreamReader(is);
    BufferedReader br=new BufferedReader(isr);
    String str=null;
    while((str=br.readLine())!=null){
        System.out.println(str);
    }
    conn.disconnect();     

但是在使用vertx的时候。这是一个握手的问题

代码语言:javascript
运行
复制
 HttpClient client = MyServer.defaultVertx.createHttpClient().setSSL(true).setTrustAll(true)
                .setHost("bugzilla.mozilla.org").setPort(443).setVerifyHost(false);

        HttpClientRequest request= client.request("GET","/rest/bug/707428/comment",new Handler<HttpClientResponse>() {

            @Override
            public void handle(HttpClientResponse cRes) {
                System.out.println(" HttpClientResponse Done.."+cRes);
                cRes.bodyHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer data) {
                        System.out.println("Response (" + data.length() + "): ");
                        System.out.println("Response  >>" +data.getString(0, data.length()));
                    }
                });

                cRes.dataHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer data) {
                        System.out.println("data Handler (" + data.length() + "): ");
                        System.out.println("data Handler<>>  "+data.getString(0, data.length()));
                    }
                });

                cRes.exceptionHandler(new Handler<Throwable>() {
                    @Override
                    public void handle(Throwable arg0) {
                        arg0.printStackTrace();
                    }
                });
            }
        });

        request.exceptionHandler(new Handler<Throwable>() {
            @Override
            public void handle(Throwable arg0) {
                // TODO Auto-generated method stub
                arg0.printStackTrace();
            }
        });
        request.end();
        client.close();




 javax.net.ssl.SSLException: Received fatal alert: handshake_failure
           at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
           at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619)
           at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587)
           at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1756)
           at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1060)
           at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:884)
           at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758)
           at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
           at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1001)
           at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:927)
           at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:873)
           at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:241)
           at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:149)
           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
           at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
           at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787)
           at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125)
           at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
           at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
           at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
           at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
           at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
           at java.lang.Thread.run(Thread.java:745)
EN

Stack Overflow用户

回答已采纳

发布于 2016-04-22 09:26:55

很难找出这一例外的确切问题。

它可能是不兼容的密码器、JCE策略jars丢失、SSL版本问题等等。

我建议启用连接相关问题的调试,以查看到底出了什么问题。

-Djavax.net.debug=all

有关更多信息,请参阅此链接

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36711108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档