我正在尝试使用RestTemplate发出POST请求,以发送请求正文和标头。
为此,我看到许多人都在使用HTTPEntity类。但是此类需要传递一个通用类型。内容类型为application / json。
在大多数情况下,我看到HttpEntity是使用String泛型类型创建的。像这样:
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
我没有得到什么,如何知道在创建HttpEntity对象时使用哪种数据类型? 我了解我们确实 ResponseEntity 将http调用的响应解析为字符串。但是我对http实体却不了解。
我试图使用Google的JsonObject在http实体对象中创建主体,如下所示:
JsonObject body = new JsonObject();
body.addProperty("key", "value");
.....
在邮递员中尝试时,该请求有效,但是当我使用String http实体时,在使用RestTemplate的代码中无效。
使用JsonObject类型时,出现此错误:
org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:不是JSON基本
在使用String类型的http实体时,我收到一些通用错误消息,说明请求无效。
添加完整的请求正文:
JsonObject body = new JsonObject();
body.addProperty("transaction_id", transaction_id);
body.addProperty("timestamp", timestamp);
body.addProperty("device_token", deviceToken);
if (forUpdate)
body.addProperty("bit0", true);
邮递员的工作卷发:
卷曲-X POST \ https://api.devicecheck.apple.com/v1/query_two_bits \ -H'内容类型:application / json'\ -H'授权:承载SOME_BEARER_TOKEN_STRING'\ -H'cache-control:no-cache'\ -d'{ “ device_token”:“ SOME_DEVICE_TOKEN”, “ transaction_id”:“ f0bc2e5d-5bd9-4437-a455-fd1e210a6268”, “时间戳记”:1557073737608 }'
那么有人可以帮助我理解如何发送此请求吗?