簡體   English   中英

rest 請求的“錯誤解析 HTTP 請求標頭”

[英]'Error parsing HTTP request header' for rest request

我 java Spring Boot Application with MongoDb 我想通過 REST 添加使用它的能力

當我嘗試發出 rest 請求(通過郵遞員)時,我收到 404 錯誤,盡管應用程序中有這樣的地址。

控制台中出現以下一組錯誤(很抱歉,日志很多,我沒有縮短它們以免不小心刪除重要細節):

DEBUG 10844 --- [nio-8081-exec-1] o.a.coyote.http11.Http11InputBuffer      : Received [GET /api/v1/genres HTTP/1.1
User-Agent: PostmanRuntime/7.29.0
Accept: */*
Postman-Token: f20c843c-e9c8-48ab-88f2-4e5a42860d02
Host: localhost:8081
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

]
DEBUG 10844 --- [nio-8081-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:1339) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1226) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:360) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

DEBUG 10844 --- [nio-8081-exec-2] o.apache.coyote.http11.Http11Processor   : Error state [CLOSE_CONNECTION_NOW] reported while processing request

java.io.EOFException: null
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1339) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1226) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:360) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.60.jar:9.0.60]
    at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

DEBUG 10844 --- [nio-8081-exec-2] o.apache.coyote.http11.Http11Processor   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@74b75509:org.apache.tomcat.util.net.NioChannel@591b6c8b:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63260]], Status in: [OPEN_READ], State out: [CLOSED]
DEBUG 10844 --- [nio-8081-exec-2] o.apache.tomcat.util.threads.LimitLatch  : Counting down[http-nio-8081-exec-2] latch=2
DEBUG 10844 --- [nio-8081-exec-2] org.apache.tomcat.util.net.NioEndpoint   : Calling [org.apache.tomcat.util.net.NioEndpoint@56c8cd71].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@74b75509:org.apache.tomcat.util.net.NioChannel@591b6c8b:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63260]])
DEBUG 10844 --- [nio-8081-exec-1] org.apache.tomcat.util.http.Parameters   : Set query string encoding to UTF-8
DEBUG 10844 --- [nio-8081-exec-1] o.a.c.authenticator.AuthenticatorBase    : Security checking request GET /api/v1/genres
DEBUG 10844 --- [nio-8081-exec-1] org.apache.catalina.realm.RealmBase      :   No applicable constraints defined
DEBUG 10844 --- [nio-8081-exec-1] o.a.c.a.jaspic.AuthConfigFactoryImpl     : Loading persistent provider registrations from [/private/var/folders/0s/7r3fm8v552g9sks3hhm0dd640000gn/T/tomcat.8081.12303308613067863794/conf/jaspic-providers.xml]
DEBUG 10844 --- [nio-8081-exec-1] o.a.c.authenticator.AuthenticatorBase    : Not subject to any constraint
DEBUG 10844 --- [nio-8081-exec-1] org.apache.tomcat.util.http.Parameters   : Set encoding to UTF-8
TRACE 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : GET "/api/v1/genres", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
TRACE 10844 --- [nio-8081-exec-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to HandlerExecutionChain with [ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]] and 4 interceptors
DEBUG 10844 --- [nio-8081-exec-1] o.s.w.s.r.ResourceHttpRequestHandler     : Resource not found
TRACE 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : No view rendering, null ModelAndView returned.
DEBUG 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 404 NOT_FOUND, headers={masked}
DEBUG 10844 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost]           : Processing ErrorPage[errorCode=0, location=/error]
TRACE 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for GET "/error", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
TRACE 10844 --- [nio-8081-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : 2 matching mappings: [{ [/error]}, { [/error], produces [text/html]}]
TRACE 10844 --- [nio-8081-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
TRACE 10844 --- [nio-8081-exec-1] o.s.web.method.HandlerMethod             : Arguments: [org.apache.catalina.core.ApplicationHttpRequest@207a1f34]
DEBUG 10844 --- [nio-8081-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
TRACE 10844 --- [nio-8081-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{timestamp=Mon Apr 18 01:10:09 MSK 2022, status=404, error=Not Found, path=/api/v1/genres}]
TRACE 10844 --- [nio-8081-exec-1] s.w.s.m.m.a.RequestMappingHandlerAdapter : Applying default cacheSeconds=-1
TRACE 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : No view rendering, null ModelAndView returned.
DEBUG 10844 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : Exiting from "ERROR" dispatch, status 404, headers={masked}
DEBUG 10844 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    :  Disabling the response for further output
DEBUG 10844 --- [nio-8081-exec-1] o.a.coyote.http11.Http11InputBuffer      : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [214]
DEBUG 10844 --- [nio-8081-exec-1] o.a.tomcat.util.net.SocketWrapperBase    : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4b1fb2fc:org.apache.tomcat.util.net.NioChannel@38a3312f:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63261]], Read from buffer: [0]
DEBUG 10844 --- [nio-8081-exec-1] org.apache.tomcat.util.net.NioEndpoint   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4b1fb2fc:org.apache.tomcat.util.net.NioChannel@38a3312f:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63261]], Read direct from socket: [0]
DEBUG 10844 --- [nio-8081-exec-1] o.a.coyote.http11.Http11InputBuffer      : Received []
DEBUG 10844 --- [nio-8081-exec-1] o.apache.coyote.http11.Http11Processor   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4b1fb2fc:org.apache.tomcat.util.net.NioChannel@38a3312f:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63261]], Status in: [OPEN_READ], State out: [OPEN]
DEBUG 10844 --- [nio-8081-exec-1] org.apache.tomcat.util.net.NioEndpoint   : Registered read interest for [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4b1fb2fc:org.apache.tomcat.util.net.NioChannel@38a3312f:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63261]]
DEBUG 10844 --- [alina-utility-2] org.apache.catalina.session.ManagerBase  : Start expire sessions StandardManager at 1650233417946 sessioncount 0
DEBUG 10844 --- [alina-utility-2] org.apache.catalina.session.ManagerBase  : End expire sessions StandardManager processingTime 1 expired sessions: 0
DEBUG 10844 --- [nio-8081-exec-3] o.apache.tomcat.util.threads.LimitLatch  : Counting down[http-nio-8081-exec-3] latch=1
DEBUG 10844 --- [nio-8081-exec-3] org.apache.tomcat.util.net.NioEndpoint   : Calling [org.apache.tomcat.util.net.NioEndpoint@56c8cd71].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4b1fb2fc:org.apache.tomcat.util.net.NioChannel@38a3312f:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8081 remote=/[0:0:0:0:0:0:0:1]:63261]])

我的休息控制器:

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class GenreController {
    private final GenreService genreService;

    @GetMapping("/genres/")
    public List<Genre> findAllGenres() {
        var genres = genreService.findAllGenres();
        return genres;
    }
}

我的 build.gradle 插件

plugins {
    id 'org.springframework.boot' version '2.5.12'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

我的 build.gradle 依賴項:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-web:2.6.6'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'

    implementation 'com.github.cloudyrock.mongock:mongock-spring-v5:4.1.14'
    implementation 'com.github.cloudyrock.mongock:mongodb-springdata-v3-driver:4.1.14'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

我從文件application.yml中刪除后問題就解決了:

spring:
    main:
        lazy-initialization: false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM