gpt4 book ai didi

java - Http Bad Request - 客户端发送的请求在语法上不正确

转载 作者:行者123 更新时间:2023-11-30 02:43:10 26 4
gpt4 key购买 nike

我对此 API 的 POST 调用给出了 400。即使序列化的 DTO 对象是正确的,它也会给出语法错误。请求正文使用与类中的字段名称相对应的正确字段名称。

此外,ApI 甚至没有受到攻击。

在 header 中,内容类型:application/json

我的 API 是:

@RequestMapping(value = "/surveymonkey/webhook/receiver", method = RequestMethod.POST)
@ResponseBody
public void respondToSurveyMonkeyPOSTCall(@RequestBody NPSWebhookRequestBody npsWebhookRequestBody, HttpServletRequest request) {


String objectType = null;

String objectId =null;

if(npsWebhookRequestBody!=null){

objectType = npsWebhookRequestBody.getObjectType();

objectId = npsWebhookRequestBody.getObjectId();
}

service.getCall(objectType,objectid
}

我的 DTO 类序列化为 requestbody 是:

package com.lk.scheduler.beans;

import com.google.gson.annotations.SerializedName;

public class NPSWebhookRequestBody {

@SerializedName("name")
String name;

@SerializedName("event_id")
String eventId;

@SerializedName("object_type")
String objectType;

@SerializedName("object_id")
String objectId;

@SerializedName("event_type")
String eventType;

@SerializedName("event_datetime")
String eventDatetime;

/**
* @return the name
*/
public String getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* @return the eventId
*/
public String getEventId() {
return eventId;
}

/**
* @param eventId the eventId to set
*/
public void setEventId(String eventId) {
this.eventId = eventId;
}

/**
* @return the objectType
*/
public String getObjectType() {
return objectType;
}

/**
* @param objectType the objectType to set
*/
public void setObjectType(String objectType) {
this.objectType = objectType;
}

/**
* @return the objectId
*/
public String getObjectId() {
return objectId;
}

/**
* @param objectId the objectId to set
*/
public void setObjectId(String objectId) {
this.objectId = objectId;
}

/**
* @return the eventType
*/
public String getEventType() {
return eventType;
}

/**
* @param eventType the eventType to set
*/
public void setEventType(String eventType) {
this.eventType = eventType;
}

/**
* @return the eventDatetime
*/
public String getEventDatetime() {
return eventDatetime;
}

/**
* @param eventDatetime the eventDatetime to set
*/
public void setEventDatetime(String eventDatetime) {
this.eventDatetime = eventDatetime;
}



}

postman 调用给出 400 :

enter image description here

附注:对此 API 的 HttpGET 和 HttpHEAD 调用正在运行。

最佳答案

我发现这个错误纯属运气。显然 Spring 的 @RequestBody 注释不适用于使用 Google 的 gson 库的序列化-反序列化。

@SerializedName(Gson 的注解属性)在反序列化时不起作用,因此无法解析请求正文中的 400 错误请求。

我们可以使用fasterxml-jackson的@JsonProperty。它工作正常,API 给出 ​​200 响应。

关于java - Http Bad Request - 客户端发送的请求在语法上不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com