C# HttpClient.PostAsync:API正在返回缺少的参数
我正试图用HttpClient发布一个标准restapi。我针对的post方法需要两个键/值对,名称和大小。当我使用下面的代码执行post时,API返回缺少键所需的错误:size。但是,我已经明确地将其添加到FormUrlEncodedContent中 我想知道是否存在编码问题,或者我是否使用了错误的编码C# HttpClient.PostAsync:API正在返回缺少的参数,c#,.net,http-post,dotnet-httpclient,C#,.net,Http Post,Dotnet Httpclient,我正试图用HttpClient发布一个标准restapi。我针对的post方法需要两个键/值对,名称和大小。当我使用下面的代码执行post时,API返回缺少键所需的错误:size。但是,我已经明确地将其添加到FormUrlEncodedContent中 我想知道是否存在编码问题,或者我是否使用了错误的编码 然后我得到了相反的错误消息:缺少必需的密钥:name。好像API因为某种原因没有看到第二个参数。我在Fiddler中检查了请求,一切似乎都是正确的。除非您出于某种原因认为问题是由于使用了Pos
然后我得到了相反的错误消息:缺少必需的密钥:name。好像API因为某种原因没有看到第二个参数。我在Fiddler中检查了请求,一切似乎都是正确的。除非您出于某种原因认为问题是由于使用了PostAsync调用的异步性质造成的,否则请不要用标签标记您的问题。请务必提供可靠的复制您的问题的方法。您是否尝试使用Fiddler检查实际发送的HTTP请求是什么?@ovolko很好的建议。我试试看。在调试时,我看不到实际内容。您也可以使用Postman确保API在给定正确参数的情况下返回您期望的内容。您是说Post可以工作,但PostAsync不能吗?
public async Task<OHDrive> Create(OHDrive drive)
{
string json = "";
var values = new Dictionary<string, string>();
//name and size are required
if (string.IsNullOrEmpty(drive.Name) || drive.Size == 0)
throw new Exception("Name and Size are required for drive creation");
values["name"] = drive.Name;
values["size"] = drive.Size.ToString();
if (drive.UserID != null)
values["user"] = drive.UserID;
if (drive.Encryption != null)
values["encryption:cipher"] = drive.Encryption;
var content = new FormUrlEncodedContent(values);
using (HttpClient client = OHUtilities.CreateClient(userID, secretKey))
{
var url = urlBase + "create";
var response = await client.PostAsync(url, content);
json = await response.Content.ReadAsStringAsync();
}
return JsonConvert.DeserializeObject<OHDrive>(json);
}
values["size"] = drive.Size.ToString();
values["name"] = drive.Name;