删除POST请求中的Transfer-Encoding:chunked?

我正在POST使用以下代码发送请求,但请求以组块(Transfer-Encoding:

chunked)的形式发送。我用谷歌搜索了这个问题,它说要包含,Content-Length但是在下面的代码中我不知道如何设置Content-

Length

@RequestMapping(value = "/contacts", method = RequestMethod.POST)

public Map<String, ContactInfo> addContactInfo(

@RequestBody Map<String, ContactInfo> ContactInfoDto) {

ContactInfo contactInfo = ContactInfoDto.get("contact");

if (contactInfo == null) {

throw new IllegalArgumentException("Contact not found.");

}

contactInfo = this.contactInfoManager.addNew(contactInfo);

Map<String, ContactInfo> map = new HashMap<>();

map.put("contact", contactInfo);

return map;

}

回答:

您可以用来ResponseEntity显式设置标题。棘手的一点是弄清楚您的内容实际上有多长时间:

@RequestMapping(value = "/contacts", method = RequestMethod.POST)

public ResponseEntity<Map<String, ContactInfo>> addContactInfo(@RequestBody Map<String, ContactInfo> contactInfoDto) throws JsonProcessingException {

ContactInfo contactInfo = contactInfoDto.get("contact");

if (contactInfo == null) {

throw new IllegalArgumentException("Contact not found.");

}

contactInfo = this.contactInfoManager.addNew(contactInfo);

Map<String, ContactInfo> map = new HashMap<>();

map.put("contact", contactInfo);

HttpHeaders headers = new HttpHeaders();

headers.set(HttpHeaders.CONTENT_LENGTH, String.valueOf(new ObjectMapper().writeValueAsString(map).length()));

return new ResponseEntity<Map<String, ContactInfo>>(map, headers, HttpStatus.CREATED);

}

测试:

$ curl -v http://localhost:8080/contacts/ -X POST -d '{ "contact": { "name": "foo" } }' -H 'Content-Type: application/json' && echo

* Trying ::1...

* Connected to localhost (::1) port 8080 (#0)

> POST /contacts/ HTTP/1.1

> Host: localhost:8080

> User-Agent: curl/7.43.0

> Accept: */*

> Content-Type: application/json

> Content-Length: 32

>

* upload completely sent off: 32 out of 32 bytes

< HTTP/1.1 201 Created

< Server: Apache-Coyote/1.1

< X-Application-Context: application

< Content-Type: application/json;charset=UTF-8

< Content-Length: 26

< Date: Fri, 10 Jun 2016 13:24:23 GMT

<

* Connection #0 to host localhost left intact

{"contact":{"name":"foo"}}

以上是 删除POST请求中的Transfer-Encoding:chunked? 的全部内容, 来源链接: utcz.com/qa/428944.html

回到顶部