【发布时间】:2020-11-27 07:20:43
【问题描述】:
我正在使用以下代码块来调用外部应用程序:
String accessToken = "...";
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + accessToken);
headers.set("Content-Type", "application/json");
HttpEntity<String> request = new HttpEntity<String>(UPDATE_BODY, headers);
String url = "...<url>...";
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
当我在 Spring Boot Web 应用程序中使用代码块时,它工作正常。但是,在 Spring 引导控制台应用程序中运行相同的块时,我收到以下错误:
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:787) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.camunda.bpm.spring.boot.example.webapp.CallApplication.main(CallApplication.java:43) [classes/:na]
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "<...url...>": Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:748) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:583) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.camunda.bpm.spring.boot.example.webapp.delegate.CreateIdentityRecordDelegate.execute(CreateIdentityRecordDelegate.java:58) ~[classes/:na]
at org.camunda.bpm.spring.boot.example.webapp.CallApplication.run(CallApplication.java:48) [classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) [spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
... 5 common frames omitted
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[na:1.8.0_261]
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_261]
at java.net.PlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_261]
at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.8.0_261]
at java.net.Socket.connect(Unknown Source) ~[na:1.8.0_261]
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) ~[na:1.8.0_261]
at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source) ~[na:1.8.0_261]
at sun.net.NetworkClient.doConnect(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[na:1.8.0_261]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) ~[na:1.8.0_261]
at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:76) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:739) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
... 10 common frames omitted
欢迎任何帮助或线索。
【问题讨论】:
-
您确定
url是正确的吗? -
我用这个字符串替换了真实的 url。从 Web 应用程序使用时,该 url 可以正常工作。
-
您的防火墙是否阻止了应用程序?
-
为什么它只会阻止命令行应用程序?
标签: java spring spring-boot rest resttemplate