从 .Net 应用程序到 AWS API Gateway 的 HTTP POST 请求未按预期工作

Posted

技术标签:

【中文标题】从 .Net 应用程序到 AWS API Gateway 的 HTTP POST 请求未按预期工作【英文标题】:HTTP POST request to AWS API Gateway from .Net app not working as expected 【发布时间】:2019-03-12 13:21:48 【问题描述】:

我有一个连接到 SQS 队列的 AWS API 网关,我可以使用 AWS 签名通过控制台和 Postman 发布消息。

我需要在 .Net 应用程序中实现 POST 请求,虽然我得到了 Ok 响应,但发布的消息并未发送到队列。这是我的代码:

            var signer = new AWS4RequestSigner(AccessKey, SecretKey);
            var request = new HttpRequestMessage
            
                Method = HttpMethod.Post,
                RequestUri = new Uri(uri)
            ;

            var parameters = new List<KeyValuePair<string, string>>();
            parameters.Add(new KeyValuePair<string, string>("Client", client));
            parameters.Add(new KeyValuePair<string, string>("Study", study));

            request.Content = new FormUrlEncodedContent(parameters);

            request = await signer.Sign(request, "execute-api", "eu-west-1");

            var client = new HttpClient();
            var response = await client.SendAsync(request);

            return response.IsSuccessStatusCode;

如果没有签名者,我也会得到 HTTP 200,但这是另一个“谜团”。

【问题讨论】:

【参考方案1】:

在阅读了这个答案后,我终于解决了这个问题: How to send a Post body in the HttpClient request in Windows Phone 8?

不要将内容作为 FormUrlEncodedContent 发送,而是将其作为 StringContent 发送。

【讨论】:

以上是关于从 .Net 应用程序到 AWS API Gateway 的 HTTP POST 请求未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

将 asp.net core web api 部署到 aws elastic beanstalk 时出现错误 404

将托管在 AWS EC2 上的 Asp.net Web api 连接到 AWS API Gateway

将表单从客户端发布到 AWS API 网关功能时如何修复 CORS 错误?

从帖子正文读取时,AWS API 网关 CORS 错误

AWS - 从公共 API 网关到 VPC 内 lambda 的路由

通过 API 将域添加到 AWS Cloudfront 分发