无法向Google reCaptcha服务器发送帖子请求 - 网络无法访问

时间:2016-09-13 13:48:29

标签: java jetty recaptcha

我正在尝试在基于Jetty的服务器上实施Google验证码,但是我无法发送验证所需的POST请求,因为我得到了这个:

java.util.concurrent.ExecutionException: java.net.SocketException: Could not connect to www.google.com/2a00:1450:400f:808:0:0:0:2004:443
    at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
    at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101)
    at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:652)
    at fishyPlays.SearchHandler.handle(SearchHandler.java:73)
    at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.eclipse.jetty.server.Server.handle(Server.java:524)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Could not connect to www.google.com/2a00:1450:400f:808:0:0:0:2004:443
    at org.eclipse.jetty.client.AbstractHttpClientTransport.connect(AbstractHttpClientTransport.java:128)
    at org.eclipse.jetty.client.HttpClient$1.connect(HttpClient.java:582)
    at org.eclipse.jetty.client.HttpClient$1.access$100(HttpClient.java:546)
    at org.eclipse.jetty.client.HttpClient$1$1.failed(HttpClient.java:579)
    at org.eclipse.jetty.client.AbstractHttpClientTransport.connectFailed(AbstractHttpClientTransport.java:152)
    at org.eclipse.jetty.client.AbstractHttpClientTransport$ClientSelectorManager.connectionFailed(AbstractHttpClientTransport.java:195)
    at org.eclipse.jetty.io.ManagedSelector$Connect.failed(ManagedSelector.java:661)
    at org.eclipse.jetty.io.ManagedSelector$Connect.access$1300(ManagedSelector.java:628)
    at org.eclipse.jetty.io.ManagedSelector$1.failed(ManagedSelector.java:366)
    at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:610)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.execute(ExecuteProduceConsume.java:100)
    at org.eclipse.jetty.io.ManagedSelector.run(ManagedSelector.java:147)
    ... 3 more
Caused by: java.net.SocketException: Network is unreachable
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:454)
    at sun.nio.ch.Net.connect(Net.java:446)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
    at org.eclipse.jetty.client.AbstractHttpClientTransport.connect(AbstractHttpClientTransport.java:115)
    ... 16 more

这就是我发送上述请求的方式

            HttpClient httpClient = new HttpClient();
            httpClient.start();
            ...
            Request r = httpClient.POST("https://www.google.com/recaptcha/api/siteverify");
            r.accept("*/*");
            r.param("secret", secret);
            r.param("response", captcha);
            try {
                ContentResponse resp = r.send();
                System.out.println(resp.getContentAsString());
            } catch (InterruptedException | TimeoutException | ExecutionException e1) {
                response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                e1.printStackTrace();
                return;
            }

如果我用其他东西替换谷歌的地址,我猜它会起作用,因为我得到的是NullPointerException。

0 个答案:

没有答案
相关问题