Java 尝试使用POST RestTemplate调用外部API时发出BadRequest 400

Java 尝试使用POST RestTemplate调用外部API时发出BadRequest 400,java,json,spring,resttemplate,httpentity,Java,Json,Spring,Resttemplate,Httpentity,我必须在JavaSpring中调用一个外部API,在这个API中我必须传递一个JSON对象,如下所示(XXX和YYY是参数) { "codecConfigId": "XXXXXXXX", "inputStreams": [{ "inputId": "Input_Teste_1024_1", "inputPath": "YYYYYYYYYYYYY", "selectionMode": "AUTO" }] } 我试过的 StreamsForCodecs st

我必须在JavaSpring中调用一个外部API,在这个API中我必须传递一个JSON对象,如下所示(XXX和YYY是参数)

{
  "codecConfigId": "XXXXXXXX", 
  "inputStreams": [{
    "inputId": "Input_Teste_1024_1",
    "inputPath": "YYYYYYYYYYYYY",
    "selectionMode": "AUTO"
  }]
}
我试过的


StreamsForCodecs streams = new StreamsForCodecs();
streams.setCodecConfigId(codecConfigId);
streams.setInputStream(path.toString());

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("Content-Type", "application/json");
map.put("x-api-key", "XXXXXXX");
map.put("Accept", "application/json");

我还尝试了
requestEntity
request
restemplate.postForEntity
restemplate.exchange
,但在所有情况下,我都收到了错误的请求。当我试图从邮递员那里调用此请求时,我没有收到错误

HttpEntity<StreamsForCodecs> requestEntity = new HttpEntity(streams, headers);
request = new HttpEntity(requestEntity, headers);
ResponseEntity<StreamsForCodecsResponse> response= new RestTemplate().exchange(url, HttpMethod.POST, requestEntity, StreamsForCodecsResponse.class);
//ResponseEntity<StreamsForCodecsResponse> response= new //RestTemplate().postForEntity(url, request, StreamsForCodecsResponse.class);
System.out.println(response.getBody());


您没有发送正确的http头,您将所有正确的头放在
map
对象中,但从未发送过它,更改代码并填充
headers
对象,而不是
map
并随请求一起发送:

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/json");
headers.add("x-api-key", "XXXXXXX");
headers.add("Accept", "application/json");

您没有发送正确的http头,您将所有正确的头放在
map
对象中,但从未发送过它,更改代码并填充
headers
对象,而不是
map
并随请求一起发送:

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/json");
headers.add("x-api-key", "XXXXXXX");
headers.add("Accept", "application/json");

我猜您没有将对象转换为JSON

    JSONObject requestJson = new JSONObject(streams).toString();
    HttpEntity<StreamsForCodecs> requestEntity = new HttpEntity<>(requestJson , headers);
JSONObject requestJson=newjsonobject(streams.toString();
HttpEntity requestEntity=新的HttpEntity(requestJson,标头);
希望这会有所帮助
使用fullstack guy提到的HttpHeaders和HttPEntity,我猜您没有将对象转换为JSON

    JSONObject requestJson = new JSONObject(streams).toString();
    HttpEntity<StreamsForCodecs> requestEntity = new HttpEntity<>(requestJson , headers);
JSONObject requestJson=newjsonobject(streams.toString();
HttpEntity requestEntity=新的HttpEntity(requestJson,标头);
希望这会有所帮助
使用fullstack guy提到的HttpHeaders和HttPEntity

我照你说的做了,但没用<代码>多值映射头=新建LinkedMultiValueMap();添加(“内容类型”、“应用程序/json”);标题。添加(“x-api-key”、“XXXXXXX”);添加(“接受”、“应用程序/json”)并发送它,继续400个错误请求。我在Fullstack Guy编辑了我的评论,但也是同样的错误请求error@CarlosDv93Dev尝试使用我显示的
HttpHeaders
。@CarlosDv93Dev只需检查您的类路径中是否有jackson我做了更改,但仍然不起作用,相同的错误。我的pom.xml中有Jackson core依赖项。我照你说的做了,但没有起作用<代码>多值映射头=新建LinkedMultiValueMap();添加(“内容类型”、“应用程序/json”);标题。添加(“x-api-key”、“XXXXXXX”);添加(“接受”、“应用程序/json”)并发送它,继续400个错误请求。我在Fullstack Guy编辑了我的评论,但也是同样的错误请求error@CarlosDv93Dev尝试使用我显示的
HttpHeaders
。@CarlosDv93Dev只需检查您的类路径中是否有jackson我做了更改,但仍然不起作用,相同的错误。我在pom.xml中有Jackson核心依赖项
    JSONObject requestJson = new JSONObject(streams).toString();
    HttpEntity<StreamsForCodecs> requestEntity = new HttpEntity<>(requestJson , headers);