Java 对于某些请求,不检测RestController的原因是什么

Java 对于某些请求,不检测RestController的原因是什么,java,spring-boot,spring-restcontroller,Java,Spring Boot,Spring Restcontroller,我正在使用SpringBoot2.1.7版本,并试图创建一个简单的rest应用程序。不知何故,来自第三方vandor应用程序的请求并没有检测到此RestController,而来自同一主机和soapUI的请求却检测到此RestController @RestController public class SendController { private static final Logger log = LoggerFactory.getLogger(SendCont

我正在使用SpringBoot2.1.7版本,并试图创建一个简单的rest应用程序。不知何故,来自第三方vandor应用程序的请求并没有检测到此RestController,而来自同一主机和soapUI的请求却检测到此RestController

 @RestController
    public class SendController {

        private static final Logger log = LoggerFactory.getLogger(SendController.class);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");

        @PostMapping("/Message")
        public ResponseEntity SendMessage(@RequestBody String body, HttpMethod method,
                HttpServletRequest request, HttpServletResponse response) throws URISyntaxException {
        log.info("SendMessage method of SendController invoked");
        response.setStatus(200);
}
控制器非常简单。我已经删除了所有简单测试的代码

当前应用程序。属性

server.port=8444
server.ssl.key-store-type=JKS
server.ssl.key-store=Message.jks
server.ssl.key-store-password=Pwd123
server.ssl.key-alias=Message
server.ssl.key-password=Pwd123

# To enable request logging - RequestLoggingFilterConfig
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
logging.file=Message-Send.log
logging.level.tomcat=DEBUG
logging.level.org.springframework.web=DEBUG
debug=true
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.prefix=message_access_log
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd
server.tomcat.accesslog.directory=/logs
server.connection-timeout=1200000
server.tomcat.maxKeepAliveRequests=1
server.max-http-header-size==8KB
server.tomcat.uri-encoding=UTF-8

logging.level.org.apache.tomcat=DEBUG
logging.level.org.apache.catalina=DEBUG

spring.http.log-request-details=true

logging.level.root=DEBUG
我能看到日志

 DEBUG 25377 --- [https-jsse-nio-8444-Acceptor] o.apache.tomcat.util.threads.LimitLatch  : Counting up[https-jsse-nio-8444-Acceptor] latch=1
 DEBUG 25377 --- [https-jsse-nio-8444-exec-5] o.a.tomcat.util.net.SecureNioChannel     : The SNI host name extracted for connection [java.nio.channels.SocketChannel[connected local=/123.456.78.90:8444 remote=/123.456.78.90:55079]] was [null]
 DEBUG 25377 --- [https-jsse-nio-8444-exec-8] o.a.tomcat.util.net.SocketWrapperBase    : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4dacb2:org.apache.tomcat.util.net.SecureNioChannel@7829e0:java.nio.channels.SocketChannel[connected local=/123.456.78.90:8444 remote=/123.456.78.90:55079]], Read from buffer: [0]
 DEBUG 25377 --- [https-jsse-nio-8444-exec-8] org.apache.tomcat.util.net.NioEndpoint   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4dacb2:org.apache.tomcat.util.net.SecureNioChannel@7829e0:java.nio.channels.SocketChannel[connected local=/123.456.78.90:8444 remote=/123.456.78.90:55079]], Read direct from socket: [145]
 DEBUG 25377 --- [https-jsse-nio-8444-exec-8] o.a.coyote.http11.Http11InputBuffer      : Received [POST /SendMessage HTTP/1.1
Host: hostname:8444s
Content-Length: 13385
Connection: keep-alive
Content-Type: text/plain

]
DEBUG 25377 --- [https-jsse-nio-8444-exec-8] o.apache.coyote.http11.Http11Processor   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4dacb2:org.apache.tomcat.util.net.SecureNioChannel@7829e0:java.nio.channels.SocketChannel[connected local=/123.456.78.90:8444 remote=/123.456.78.90:55079]], Status in: [OPEN_READ], State out: [CLOSED]
DEBUG 25377 --- [https-jsse-nio-8444-exec-8] org.apache.tomcat.util.net.NioEndpoint   : Calling [org.apache.tomcat.util.net.NioEndpoint@1c9af63].closeSocket([org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@4dacb2:org.apache.tomcat.util.net.SecureNioChannel@7829e0:java.nio.channels.SocketChannel[connected local=/123.456.78.90:8444 remote=/123.456.78.90:55079]])

java.lang.Exception: null
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doClose(NioEndpoint.java:1165) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at org.apache.tomcat.util.net.SocketWrapperBase.close(SocketWrapperBase.java:394) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at org.apache.tomcat.util.net.NioEndpoint$Poller.cancelledKey(NioEndpoint.java:667) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_202]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_202]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.22.jar!/:9.0.22]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_202]
对于检测到控制器的请求,我可以按预期查看RequestMappingHandler映射

DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.a.coyote.http11.Http11InputBuffer      : Received [POST /SendMessage HTTP/1.1
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Host: hostname:8444
Accept: */*
Content-Type: text/plain
Connection: Keep-Alive
Content-Length: 13516
Expect: 100-continue

]
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] org.apache.tomcat.util.http.Parameters   : Set query string encoding to UTF-8
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.a.c.authenticator.AuthenticatorBase    : Security checking request POST /SendMessage
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] org.apache.catalina.realm.RealmBase      :   No applicable constraints defined
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.a.c.a.jaspic.AuthConfigFactoryImpl     : Loading persistent provider registrations from [/tmp/tomcat.4732512376857604387.8444/conf/jaspic-providers.xml]
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.a.c.authenticator.AuthenticatorBase    :  Not subject to any constraint
INFO 25377 --- [https-jsse-nio-8444-exec-4] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
INFO 25377 --- [https-jsse-nio-8444-exec-4] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.s.web.servlet.DispatcherServlet        : Detected StandardServletMultipartResolver
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.s.web.servlet.DispatcherServlet        : enableLoggingRequestDetails='true': request parameters and headers will be shown which may lead to unsafe logging of potentially sensitive data
INFO 25377 --- [https-jsse-nio-8444-exec-4] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] org.apache.tomcat.util.http.Parameters   : Set encoding to UTF-8
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] o.s.web.servlet.DispatcherServlet        : POST "/SendMessage", parameters={}
DEBUG 25377 --- [https-jsse-nio-8444-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public void SendController.SendMessage(java.lang.String,org.springframework.http.HttpMethod,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.net.URISyntaxException

请引导我。

他们准时到达吗?或者他们得到了什么特别的回应?没有超时。它收到400个错误的请求响应。请验证标头是否从第三方供应商应用程序传递了正确的内容类型我注意到供应商应用程序正在其标头上发送端口#如上面的主机信息所示的8444s。所以我想知道这是否会引起问题。我在谷歌上搜索是否有办法禁用主机/端口信息验证等…发现。。。“必须在所有HTTP/1.1请求消息中发送主机标头字段。400(错误请求)状态代码将发送到任何缺少主机标头字段或包含多个主机标头字段的HTTP/1.1请求消息。”正在考虑端口以s结尾的错误主机名是否会导致此问题。。。