如何在 AmazonWebServiceRequest 上设置 JSON 负载

How to set JSON payload on AmazoneWebServiceRequest

我正在使用 AmazonHttpClient 和 AmazonWebServiceRequest 从 android 应用向 API 网关发出 http 请求。 requestBody 是一个 JSON 字符串,DefaultRequest 似乎只接受 InputStream 作为内容。

final AmazonWebServiceRequest awsRequest = new AmazonWebServiceRequest() {};
final Request request = new DefaultRequest(awsRequest, UtilConstants.API_GATEWAY_SERVICE_NAME);
request.setEndpoint(uri);
request.setHttpMethod(requestType);
request.addHeader(HttpHeader.CONTENT_TYPE, "application/json");
final InputStream stream = new ByteArrayInputStream(requestBody.getBytes(StandardCharsets.UTF_8));
request.setContent(stream);

当我发出请求时,出现以下异常

Caused by: com.amazonaws.AmazonClientException: Unable to execute HTTP request: expected 0 bytes but received 38

添加 HttpHeader.CONTENT_LENGTH header 解决了问题。