在本地环境中使用 Google reCAPTCHA 时,是不是有办法解决 ResourceAccessException?

Posted

技术标签:

【中文标题】在本地环境中使用 Google reCAPTCHA 时,是不是有办法解决 ResourceAccessException?【英文标题】:Is there anyway to work around the ResourceAccessException when working with Google reCAPTCHA in local environment?在本地环境中使用 Google reCAPTCHA 时,是否有办法解决 ResourceAccessException? 【发布时间】:2020-10-17 01:18:51 【问题描述】:

我正在尝试在我的本地环境 Java(SpringBoot) 代码中验证 Google reCAPTCHA 响应。无论我尝试使用什么方法进行 REST 调用,我都会不断收到此异常。但是,当我从 PostMan 访问相同的 API 以及在我们的 Azure 平台上部署代码时,我能够得到 Google 的响应。 有没有办法解决这个问题?

以下是网址:

https://www.google.com/recaptcha/api/siteverify?secret=<secrete_key>&response=<gRecaptchaResponse>

下面是被抛出的异常:

对于路径 [] 上下文中的 servlet [dispatcherServlet] 抛出异常 [请求处理失败;嵌套异常是 org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://www.google.com/recaptcha/api/siteverify": Connection reset;嵌套异常是 java.net.SocketException: Connection reset] with root cause

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:210) ~[na:1.8.0_161]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_161]
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) ~[na:1.8.0_161]
    at sun.security.ssl.InputRecord.read(InputRecord.java:503) ~[na:1.8.0_161]
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983) ~[na:1.8.0_161]
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) ~[na:1.8.0_161]
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) ~[na:1.8.0_161]

【问题讨论】:

【参考方案1】:

您可以将其包装在 try-catch 块中:

try 

 catch (SSLException e) 

 catch (SocketException e) 

 catch (IOException ie) 


【讨论】:

以上是关于在本地环境中使用 Google reCAPTCHA 时,是不是有办法解决 ResourceAccessException?的主要内容,如果未能解决你的问题,请参考以下文章

ReCaptcha 离线/本地使用

SweetAlert提示中的Google reCaptcha

使用 Selenium 时 Google 的 reCAPTCHA 被破坏

使用 ng-recaptcha 将 Google reCaptcha v3 集成到 Angular 应用程序中

google recaptcha使用

Google reCAPTCHA 错误:提供的云项目编号不拥有给定的 reCAPTCHA 密钥