为什么我的多部分表单数据转换为JSON?

时间:2016-03-11 15:40:28

标签: android json jackson android-annotations

我需要对API进行POST,其中需要多部分表单数据,其中一个记录键为'json',值为包含json对象的字符串。

我正在尝试使用像这样的AndroidAnnotations:

@Post(API_CREATE_PATH + API_KEY)
CreateResponse create(Map<String,String> map);

有效请求如下所示,使用Postman完成:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="json"

{"test":"data"}
----WebKitFormBoundary7MA4YWxkTrZu0gW

而不是,实际的请求正文包含"json":"{"test":"data"}",我无法理解为什么。

1 个答案:

答案 0 :(得分:2)

您可以通过这种方式发送多部分POST,explained in the wiki

@Rest(rootUrl = "http://company.com/ajax/services", converters = FormHttpMessageConverter.class)
public interface MyRestClient extends RestClientHeaders {

  @Post(API_CREATE_PATH + API_KEY)
  @RequiresHeader(HttpHeaders.CONTENT_TYPE)
  CreateResponse create(MultiValueMap<String,Object> map);
}

MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.set("test","data");

client.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA_VALUE);

client.create(map);