java - Flask 从 spring 接收空的 Post 请求正文。错误 400
问题描述
我正在开发一个带有spring boot和flask的项目,该项目目前正在开发/烧瓶服务器上运行。我需要从 spring boot 发送一个 post-request 到烧瓶,但我从烧瓶得到的只是一个错误 400。
对于后请求,我使用以下代码:
@PostMapping("/catOrDog")
public ResponseEntity<CatOrDogResponse> catOrDog(@RequestHeader HttpHeaders headers,
@RequestBody CatOrDogRequest catOrDogRequest) {
String url = "http://localhost:5000/cat_or_dog/predict/";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headersForFlask = new HttpHeaders();
headersForFlask.setContentType(MediaType.MULTIPART_FORM_DATA);
Map<String, Object> map = new HashMap<>();
map.put("images", catOrDogRequest.getImages());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.TEXT_HTML);
mediaTypes.add(MediaType.APPLICATION_JSON);
mediaTypes.add(MediaType.MULTIPART_FORM_DATA);
converter.setSupportedMediaTypes(mediaTypes);
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(converter);
restTemplate.setMessageConverters(messageConverters);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(map, headersForFlask);
// System.out.println("Entity: " + entity.toString());
ResponseEntity<CatOrDogResponse> response = restTemplate.postForEntity(url, entity, CatOrDogResponse.class);
return response;
}
我在烧瓶中用于调试的代码:
@app.route('/cat_or_dog/predict/', methods=['POST'])
def image_classifier_cat_or_dog():
print(request.headers)
print("Items in form:")
for item in request.form.items():
print(item)
这应该打印请求的标头以及spring发布的表单中的所有项目,但这是我从flask获得的输出:
Accept: text/html, application/json, multipart/form-data
Content-Type: multipart/form-data
User-Agent: Java/1.8.0_241
Host: localhost:5000
Connection: keep-alive
Content-Length: 26563
Items in form:
INFO:werkzeug:127.0.0.1 - - [06/May/2020 23:52:10] "POST /cat_or_dog/predict/ HTTP/1.1" 400 -
发送失眠的帖子请求时,一切正常。
解决方案
推荐阅读
- python - 如何修复“RuntimeError:协调器停止但线程仍在运行:QueueRunnerThread-dummy_queue-sync_token_q_EnqueueMany”
- java - MESSAGE Checkstyle-Plugin:无法解析配置流
- java - HashMap 中键值对的顺序
- dialogflow-es - 无法将 Botium 实时聊天与 Google Dialogflow 连接起来
- file-storage - 如何为 Azure Service Fabric 集群中运行的无状态服务提供文件共享?
- google-sheets - 基于将不同的单元格值与列标题匹配来格式化行中的单元格
- visual-studio - InstallShield 不接受 <
- datetime - 如何在使用 xarray 加载 NETCDF 文件时解码时间变量
- git - 变基和强制推送后丢失 git 提交 - 删除 git 对象
- javascript - 我如何通过 linq 获取数组项