编辑:我不再在这个地方工作,我们还是切换到node.js,所以我无法验证任何人的答案是否正确。请投票以关闭(只需要一个(。
这不是其他问题的重复(或至少我遇到的问题(,因为我在代码中的任何地方都不使用SSL/HTTP。我还能够确认这些错误来自我的系统,而不是外部来源(例如机器人(。如果这很简单,那我道歉,我才几个月前才开始使用Spring Boot。
我正在开发一个物联网系统,在该系统中,我将带有传感器的Raspberry Pi Zero W进入场地。Raspberry Pi通过蓝牙LE获取传感器数据,HTTP将数据发布到Spring Boot服务器(该数据托管在AWS EC2实例上(。奇怪的是,服务器暂时可以完美地获取数据(在这种情况下为3周(,然后我开始从Spring/Tomcat开始获得此例外:
2017-06-03 06:17:07.508 INFO 19927 --- [p-nio-80-exec-8]
o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at
org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:421) ~[tomcat-embed-core-8.5.11.jar!/:8.5.11] (rest of the stack trace)
正如我上面提到的,我没有在弹簧靴或覆盆子Pi中使用HTTP。由于Raspberry Pi被部署到远程位置,因此我没有更改代码。
在Raspberry Pi上运行的程序是用Python编写的,我使用requests.post
方法将数据发送到服务器。
我也注意到系统的早期部署,该行为使用Android设备将数据发送数据。所以我认为客户没有任何问题...
我已经对服务器进行了很多测试,尤其是当我添加新功能时,我以前从未遇到过此错误(除了以前的部署外(。一旦发生此错误,似乎一直在发生这种错误(我连续丢失了3个传感器读数,所有这些都在不同的日子/时间(。
。数据在离开Raspberry Pi时会损坏吗?requests.post
是否有一些奇怪的行为?我使用春季编写的代码会以某种方式影响tomcat吗?我不知道为什么会发生这种情况,而我遇到的所有其他答案通常是因为HTTP与HTTP连接的HTTPS。我的application.properties文件只有server.port = 80
非常感谢您的任何帮助!
有时,当未设置服务器以通过https处理安全请求时,就会发生这种情况,但是客户端以这种方式发送它们。当我犯了这个错误时,我得到了一个看起来像这样的回应:
Invalid character found in method name [0x160x030x010x000xf70x010x110x110xf30x030x030x0e0xef0x9d10x8dV0xff0x000x1d0xcf0xffE0x4!0x5}0xa40xef/0xdf ]. HTTP method names must be tokens
我也有类似的问题并添加
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
解决了我的问题。
#Increase header buffer size
#server.tomact.max-http-header-size: 8192 this is lose efficacy
server.max-http-header-size=15360
今天,我也面临类似的问题。我将URL从HTTPS更改为HTTP,并解决了问题。