【发布时间】:2018-11-16 12:44:20
【问题描述】:
我有一个 Spring Boot 服务器应用程序,它从具有以下特征的外部服务接收 POST 请求:
标题
accept-encoding: gzip,deflate
user-agent: Apache-HttpClient/4.3.6 (java 1.5)
connection: Keep-Alive
host: webhook.site
content-type: application/x-www-form-urlencoded
content-length: 558
Query strings: (empty)
表单值
BillNumber: 41492032464
BillValue: 600000.0
Description: Description
为了能够处理来自外部服务的这个 POST 请求,我实现了以下控制器,它的作用是创建和存储发票,但我的应用程序返回 HTTP 错误 406:
@RequestMapping(value = "/bills", method = RequestMethod.POST, headers = "Accept=application/x-www-form-urlencoded")
@ResponseBody
@Transactional
public void createBill(UriComponentsBuilder uriComponentsBuilder,
final HttpServletRequest request,
final HttpServletResponse response) throws IOException {
}
我知道错误是指客户端(在这种情况下是外部服务)不理解服务器响应的“语言”,但正如您在我的控制器的标题中看到的那样,我正在接受“application / x -www-form -urlencoded”。我不知道这是否是由于另一个问题,我的控制器也是无效的。
这个控制器应该如何在我的 Spring Boot 应用中实现?
【问题讨论】:
-
不,这意味着服务器无法生成客户端要求的内容。您正在混淆 Accept(这是我想要返回的内容)和 Content-Type(这是我要发送的内容)标头。
标签: java spring spring-boot