从 .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 错误?