我有一个简单的软件:我需要向带有参数的Web API发送POST请求。
所以我使用以下代码:
using (HttpClient httpClient = new HttpClient { BaseAddress = "http://localhost:51074" })
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("param1", param1),
new KeyValuePair<string, string>("param2", param2),
new KeyValuePair<string, string>("param3", param3)
});
string uri = "/api/Authenticate";
var response = httpClient.PostAsync(uri, content);
}
但无论我尝试什么,查询字符串参数都不会添加到我的请求中。 我收到400 - Not Found错误。
我不知道为什么没有添加参数。 如果我只是手动将参数添加到我的uri,例如:
string uri = "/api/Authenticate?param1=param1¶m2=param2¶m3=param3";
PostAsync工作正常。
这让我发疯。我希望有人有解决方案。
我需要发送一个url作为参数,这就是我需要使用FormUrlEncodedContent的原因
答案 0 :(得分:0)
我认为您收到错误是因为您的Web Api的Post
方法不期望复杂类型(System.Net.Http.FormUrlEncodedContent
)。它期待字符串。我猜你的Web Api方法目前看起来像这样:
public void Post([FromBody]string value)
{
}
您应该将其更改为
public void Post([FromBody]System.Net.Http.FormUrlEncodedContent value)
{
}
通过这种方式,它将知道预期的类型。