![](/img/trans.png)
[英]How to parse HTTP 400 response using Jersey Client into a Java Class?
[英]Jersey response HTTP 400 Bad Requests, no clue way
我有一台NGINX服务器,然后有一台Tomcat作为Servlet容器。 我从球衣2.25.1升级到2.26,可以使它工作:
我将服务器中的Java版本从jdk1.8.0_91更新为jdk1.8.0_161。 我在REST项目中更新了依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Jersey core Servlet 2.x implementation -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
<scope>${dependency.scopes}</scope>
</dependency>
<!-- Jersey Multipart entity providers support module -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<scope>${dependency.scopes}</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<scope>${dependency.scopes}</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
其中提供了dependency.scopes。 所有依赖项都放置在Tomcat的lib文件夹中。 我有一些关于依赖项的问题,但是现在我没有看到任何例外。
NGINX将HTTP重定向,而HTTPS后端流量则重定向到Tomcat。 当我请求使用HTTP时,我得到正确的响应。 当我不使用HTTPS请求时,会得到HTTP400。相同的URL,相同的请求标头,只是更改了协议。
另外,如果我从NGINX服务器使用WGET命令请求相同的URL,我将从Tomcat(使用HTTP和HTTPS)获得正确的答案。
因此,Tomcat看起来在两种协议中都可以很好地解决问题,但有时是这样。
tomcat中的任何日志中都没有任何异常。 通过NGINX请求GET时,我只是在访问日志中看到HTTP 400代码。
HTTPS Request
- - - [02/Apr/2018:17:02:00 +0000] "GET /request HTTP/1.0" 400 1001 71 https-jsse-nio-8542-exec-4
HTTP Request
- - - [02/Apr/2018:17:29:35 +0000] "GET /request HTTP/1.0" 200 45 16 https-jsse-nio-8542-exec-9
看起来问题出在HTTP标头中,但是我从tomcat端看不到它们。 是否有可能启用一些额外的日志记录以获取任何线索?
谢谢,
下图显示了tomcat中添加的依赖项:
我可以通过比较HTTP和HTTPS配置来解决NGINX配置中的问题。 我的HOST标头错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.