如何使用 AwsCrtHttpClient(AWS CRT HTTP 客户端?)设置 POST 请求的请求正文

问题描述 投票:0回答:1

我正在使用 AWS CRT HTTP 客户端 创建 HTTP 请求,但我找不到设置请求正文的方法。我将 Java 11 与 AWS SDK 版本 2.27.9 结合使用。无论我如何配置这个同步客户端,我的请求都没有请求正文。

我尝试使用

SdkHttpFullRequest builder
HttpExecuteRequest builder 上的 contentStreamProvider 字段设置请求正文。使用两者,我可以提供一个完整的示例:

SdkHttpClient httpClient = AwsCrtHttpClient.builder().build();
SdkHttpFullRequest sdkHttpRequest = SdkHttpFullRequest.builder()
        .uri(new URI("http://127.0.0.1:5000/post"))
        .contentStreamProvider(ContentStreamProvider.fromUtf8String("'{\"foo\":\"bar\"}'"))
        .method(SdkHttpMethod.POST)
        .appendHeader("accept", "application/json")
        .appendHeader("Content-Type", "application/json")
        .build();
HttpExecuteRequest request = HttpExecuteRequest.builder()
        .request(sdkHttpRequest)
        .contentStreamProvider(ContentStreamProvider.fromUtf8String("'{\"foo\":\"bar\"}'"))
        .build();
HttpExecuteResponse response = httpClient.prepareRequest(request).call();

我正在端口 5000 上运行本地 Python Flask 应用程序来查看请求数据,但尽管我努力设置请求正文,但请求正文始终为空。我尝试过其他服务器,本地和远程,但它们也没有接收数据。

httpclient aws-sdk java-11 aws-sdk-java-2.0 aws-java-sdk-2.x
1个回答
0
投票

事实证明,AWS CRT HTTP 客户端并不是真正可以替代内置 Java HTTP 客户端的完整 HTTP 客户端。它需要进行配置,然后注入到其他 AWS 服务客户端中。我们决定继续使用标准 Java HTTP 客户端,并不再使用 AWS CRT HTTP 客户端来处理 HTTP 请求。

© www.soinside.com 2019 - 2024. All rights reserved.