我想使用 RestTemplate 通过我自己的应用程序中的端点执行GET,但是当我这样做时,出现以下错误/异常:
o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1229) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
这是我的端点类:
@RequestMapping("/wakeup")
@RestController
public class WakeUpResource {
private Logger logger = LoggerFactory.getLogger(ApplicationWakeUpScheduller.class);
@GetMapping
public @ResponseBody String wakeup() {
return "I am awake!";
}
}
这是我的Application类,其中的端点称为:
@SpringBootApplication
public class NovaVidaBudgetApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(NovaVidaBudgetApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
wakeUpApplication();
}
public void wakeUpApplication() {
HttpHeaders headers = getHttpHeaders();
final RestTemplate restTemplate = new RestTemplate();
final String url = "http://localhost:8080/wakeup";
HttpEntity<String> requestEntity = new HttpEntity<>(headers);
restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
}
private HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
return headers;
}
}
当我立即执行此应用程序时,将调用终结点并得到 200 状态响应,但是这种令人讨厌的EOFException
也会发生。这是包含异常的完整日志:
2019-11-17 18:47:34.294 INFO 27233 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 10 ms
2019-11-17 18:47:34.305 DEBUG 27233 --- [nio-8080-exec-1] org.apache.tomcat.util.http.Parameters : Set encoding to UTF-8
2019-11-17 18:47:34.305 DEBUG 27233 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : GET "/api/v1/wakeup", parameters={}
2019-11-17 18:47:34.308 DEBUG 27233 --- [nio-8080-exec-1] pertySourcedRequestMappingHandlerMapping : looking up handler for path: /wakeup
2019-11-17 18:47:34.311 DEBUG 27233 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.codeonblue.novavidabudget.resources.WakeUpResource#wakeup()
2019-11-17 18:47:34.322 DEBUG 27233 --- [nio-8080-exec-1] c.c.n.s.ApplicationWakeUpScheduller : Waking up the application
2019-11-17 18:47:34.331 DEBUG 27233 --- [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Using 'text/plain', given [text/plain, application/json, application/*+json, */*] and supported [text/plain, */*, application/json, application/*+json]
2019-11-17 18:47:34.331 DEBUG 27233 --- [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Writing ["I am awake!"]
2019-11-17 18:47:34.342 DEBUG 27233 --- [ restartedMain] s.n.www.protocol.http.HttpURLConnection : sun.net.www.MessageHeader@8adddc44 pairs: {null: HTTP/1.1 200}{Content-Type: text/plain;charset=ISO-8859-1}{Content-Length: 11}{Date: Sun, 17 Nov 2019 20:47:34 GMT}
2019-11-17 18:47:34.343 DEBUG 27233 --- [ restartedMain] o.s.web.client.RestTemplate : Response 200 OK
2019-11-17 18:47:34.343 DEBUG 27233 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed 200 OK
2019-11-17 18:47:34.349 DEBUG 27233 --- [ restartedMain] o.s.web.client.RestTemplate : Reading to [java.lang.String] as "text/plain;charset=ISO-8859-1"
2019-11-17 18:47:34.354 DEBUG 27233 --- [ restartedMain] c.c.n.s.ApplicationWakeUpScheduller : End http call.
2019-11-17 18:47:34.354 DEBUG 27233 --- [ restartedMain] o.s.boot.devtools.restart.Restarter : Creating new Restarter for thread Thread[main,5,main]
2019-11-17 18:47:34.354 DEBUG 27233 --- [ restartedMain] o.s.boot.devtools.restart.Restarter : Immediately restarting application
2019-11-17 18:47:34.354 DEBUG 27233 --- [ restartedMain] o.s.boot.devtools.restart.Restarter : Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@4d595ac5
2019-11-17 18:47:34.354 DEBUG 27233 --- [ restartedMain] o.s.boot.devtools.restart.Restarter : Starting application com.codeonblue.novavidabudget.NovaVidaBudgetApplication with URLs [file:/home/james/appz/1-current-projects/springboot/novavidabudget/target/classes/]
2019-11-17 18:47:34.358 DEBUG 27233 --- [nio-8080-exec-1] o.a.tomcat.util.net.SocketWrapperBase : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]], Read from buffer: [0]
2019-11-17 18:47:34.358 DEBUG 27233 --- [nio-8080-exec-1] org.apache.tomcat.util.net.NioEndpoint : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]], Read direct from socket: [0]
2019-11-17 18:47:34.358 DEBUG 27233 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]], Status in: [OPEN_READ], State out: [OPEN]
2019-11-17 18:47:39.356 DEBUG 27233 --- [nio-8080-exec-2] o.a.tomcat.util.net.SocketWrapperBase : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]], Read from buffer: [0]
2019-11-17 18:47:39.358 DEBUG 27233 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1229) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1137) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:735) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:353) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:292) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
2019-11-17 18:47:39.358 DEBUG 27233 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]], Status in: [OPEN_READ], State out: [CLOSED]
2019-11-17 18:47:39.360 DEBUG 27233 --- [nio-8080-exec-2] org.apache.tomcat.util.net.NioEndpoint : Calling [org.apache.tomcat.util.net.NioEndpoint@57fbed24].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4330282d:org.apache.tomcat.util.net.NioChannel@1d148f25:java.nio.channels.SocketChannel[connected local=/127.0.0.1:8080 remote=/127.0.0.1:40364]])
java.lang.Exception: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doClose(NioEndpoint.java:1163) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.SocketWrapperBase.close(SocketWrapperBase.java:402) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.NioEndpoint$Poller.cancelledKey(NioEndpoint.java:665) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1582) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
我认为下面的错误是一个提示,但是我不知道标头出了什么问题
o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
有什么想法吗?
预先感谢