当前位置: 首页 > 知识库问答 >
问题:

在SPRINGBOOT中POST请求时出现I/O错误

汤嘉平
2023-03-14

我已经用谷歌搜索了它。但是这些都不能解决我的问题。我在调用rest控件时,代码中的SSL证书出现了问题。

我的控制方法是:

@CrossOrigin(origins = "http://localhost:4200")
@RequestMapping(value = "/token", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody TokenModel GetToken(@RequestBody RequestBodyJson requestBodyJson) {
    TokenModel response = null; 
    RestTemplate restTemplate = new RestTemplate();
    try {                          
        response = new GenericRestClient<RequestBodyJson, TokenModel>().execute(
            new RequestDetails(url, HttpMethod.POST), requestBodyJson, responseHandler,TokenModel.class);
        restTemplate.getForEntity(url , TokenModel.class);
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    return response;
}

错误为:-I/O错误在“https://myurl.com”的POST请求上:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.security.provider.certpath.suncertPathBuilderException:无法找到请求目标的有效证书路径;嵌套异常为javax.net.ssl.sslhandShakeException:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.security.provider.certPath.SunCertPathBuilderException:找不到请求目标的有效证书路径

这里有人能帮我吗?

共有1个答案

微生阳平
2023-03-14

谢谢你们的帮助。

我已经解决了这个问题

在我的pom.xml中,我添加了一个依赖项

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5</version>
</dependency>

那么我的JAVA代码是

@RequestMapping(value = "/gettokens", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody ResponseEntity<TokenModel> GetTokens(@RequestBody RequestBodyJson requestBodyJson)
        throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
    ResponseEntity<TokenModel> response = null;
    TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
            .loadTrustMaterial(null, acceptingTrustStrategy).build();
    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
    CloseableHttpClient httpClient = HttpClients.custom()
            .setSSLSocketFactory(csf).build();
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
    requestFactory.setHttpClient(httpClient);
    RestTemplate restTemplate = new RestTemplate(requestFactory);       
    try {                          
        MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
        Map map = new HashMap<String, String>();
        map.put("Content-Type", "application/json");
        headers.setAll(map);
        HttpEntity<?> _HttpEntityRequestBodyJson = new HttpEntity<>(requestBodyJson, headers); 
        response= restTemplate.exchange(url, HttpMethod.POST,_HttpEntityRequestBodyJson, new ParameterizedTypeReference<TokenModel>() {});  
        System.out.println(response.getBody());
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    return response;
}
 类似资料:
  • 我正在使用rest模板调用外部系统,它在本地运行正常,没有任何超时设置,但在我的测试服务器上,它给了我以下错误: “的POST请求时出现I/O错误”https://externalsystem/url“:连接被拒绝:连接;嵌套的异常是java。网ConnectException:连接被拒绝:连接

  • 尝试将数据发布到api时出错。下面是代码片段。期待早日得到帮助!谢谢 7组织。springframework。网状物客户ResourceAccessException:“jirasdtest.myoutotec.com/rest/api/2/issue/SD-1043/comment”的POST请求出现I/O错误:连接超时;嵌套异常为java。网SocketTimeoutException:连接在

  • 当我调用restendpoint(rest模板http客户端)“myservice..com/rest/api/”时,有时会出现以下错误。此错误的原因是什么?这是客户端还是服务器错误?

  • 我是新来的vuejs和我下面的教程(https://www.youtube.com/watch?v=Wy9q22isx3U

  • 我正在制作一个小应用程序,我可以使用spring-boot保存用户详细信息。我创建了实体及其相应的存储库。当我发出帖子请求以添加用户的用户对象的id时,该id在保存到数据时为空base.Thisid在MySQL中自动生成(自动增量)。从POST请求中,我得到3个字段,即用户名、电子邮件、密码。用户类包含字段id、用户名、电子邮件、密码。我添加了注释 作为 id 字段。构造函数是 我的用户服务类 我

  • 问题内容: 我正在尝试将jQuery集成到我使用Django框架制作的Web应用程序中。但是,我很难打电话给上班族。我的模板文件包含处理ajax调用的html和javascript形式,如下所示: 我应该处理的ajax调用看起来像: 我试图遵循有关跨站点请求伪造保护的官方文档,并且还研究了解决类似问题的一些stackoverflow问题。我已经将包含在我的模板文件中,但是它似乎仍然无法正常工作。我