我一直在查看提交请求时出现的问题;
X-Forwarded-For: so.me.ip.ad
Authorization: Bearer blahblahblahstuff
Accept: application/json
Content-Type: application/json; charset=UTF-8
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.8.0_60
Host: the.endpoint.io
Connection: keep-alive
Content-Length: 395
具有语法正确的Gson json体。它的长度完全相同,而且形状良好。我使用wireshark捕获确切的响应,数字加起来。也就是说,我不认为请求机构的结尾有臃肿。如果wireshark无法接受,请告诉我。考虑到这一点,我认为修复here不适用于此问题。
我一直在测试它在本地运行payara,而生产服务器也是payara(完全相同的版本)。在本地,请求很好,按预期工作,使用完全相同的params live,端点未到达,因为我们处理我们自己的api错误代码,这个在html中给出,而不是json,并且可以在下面看到;
Payara Server 4.1.2.173 #badassfish - 错误报告
HTTP 状态400 - 错误请求
键入:状态 报告
消息:错误请求
描述: 客户端发送的请求是语法上的 不正确。
Payara Server 4.1.2.173 #badassfish
我们正在使用HttpUrlConnection库执行post;
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if (this.clientip != null && !this.clientip.isEmpty())
{
connection.addRequestProperty("X-Forwarded-For", this.clientip);
}
if (this.vauthtoken != null && !this.vauthtoken.isEmpty())
{
connection.addRequestProperty("Authorization", "Bearer " + this.vauthtoken);
}
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setRequestMethod(this.method);
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
if(this.body != null)
{
try (OutputStream os = connection.getOutputStream()) {
os.write(this.body.toString().getBytes("UTF-8"));
}
}
if(connection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
response = this.getJsonBody(connection.getInputStream());
}
else
{
response = this.getJsonBody(connection.getErrorStream());
}
我们的终点看起来像;
@Path("/some/path")
public class SomeClass extends SomeThingelse {
final static Logger LOGGER = Logger.getLogger(SomeClass.class.getName());
@POST
@Audit
@Secured(roles = {Role.SOMEROLE}, crud = Crud.CREATE)
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response someMethodRelating(@Context SecurityContext securityContext, @Valid SomeValidatedClass svClass)
{
我错过了什么吗?或者这更像是一个服务器问题?非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
要么您没有使用正确的方法(使用GET而不是POST),要么您发送的正文不是JSON,或者不验证SomeValidatedClass
中的规则。