作者:maniac0207 | 来源:互联网 | 2023-09-13 06:48
在Jenkins上发布删除作业的请求时出现超时错误。该作业被删除,但没有在我的代码中得到响应。
尝试增加和减少超时时间,但抛出400错误的请求错误
删除仅在5000超时时有效,但是在发布请求时出现I / O错误。
我为Rest Template手动创建实例,因为每个请求的凭据都不同
P.S:通过邮递员在本地运行时,此方法效果很好。问题仅在远程发生
下面是我的代码
公共类JenkinAuthRestTemplate扩展了RestTemplate {
public JenkinAuthRestTemplate(String password,int readTimeOut,int connectTimeOut) {
addAuthentication(password,readTimeOut,connectTimeOut);
}
private void addAuthentication(String password,int connectTimeOut) {
SSLContext sslCOntext= null;
try {
sslCOntext= SSLContexts.custom().loadTrustMaterial(null,new TrustSelfSignedStrategy()).build();
} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,new HostnameVerifier() {
@Override
public boolean verify(String hostname,SSLSession session) {
return true;
}
});
HttpComponentsClientHttprequestfactory requestfactory = new HttpComponentsClientHttprequestfactory();
requestfactory.setConnectTimeout(readTimeOut);
requestfactory.setReadTimeout(connectTimeOut);
requestfactory.setHttpClient(HttpClients.custom().setSSLSocketFactory(sslsf).build());
List interceptors = Collections
. singletonList(new BasicAuthorizationInterceptor(password));
setrequestfactory(new InterceptingClientHttprequestfactory(requestfactory,interceptors));
}
private static class BasicAuthorizationInterceptor implements ClientHttpRequestInterceptor {
private final String password;
public BasicAuthorizationInterceptor(String password) {
this.password = (password == null ? "" : password);
}
@Override
public ClientHttpResponse intercept(HttpRequest request,byte[] body,ClientHttpRequestExecution execution)
throws IOException {
request.getHeaders().add("Authorization","Basic " + (this.password));
return execution.execute(request,body);
}
}
}
deleteJob.java
JenkinAuthRestTemplate restTemplate = new JenkinAuthRestTemplate(
jenkin.getToken(endpoint),5000,5000);
ResponseEntity响应= restTemplate.exchange(端点,HttpMethod.POST,null,String.class);
logger.info(response.getStatusCodeValue());