C# HttpClient POST 请求
C# HttpClient POST 请求
我正在尝试创建一个POST请求,但无法使其工作。
请求的格式如下,其中有3个参数:accountidentifier / type / seriesid
http://someSite.com/api/User_Favorites.php?accountid=accountidentifier&type=type&seriesid=seriesid
这是我的C#代码:
using (var httpClient = new HttpClient()) { httpClient.BaseAddress = new Uri("http://somesite.com"); var content = new FormUrlEncodedContent(new[] { new KeyValuePair("accountidentifier", accountID), new KeyValuePair ("type", "add"), new KeyValuePair ("seriesid", seriesId), }); httpClient.PostAsync("/api/User_Favorites.php", content); }
有什么想法吗?
C# HttpClient POST请求的原因是找不到FormUrlEncodedContent类,解决方法是手动输入类名。
在C#中,字典对于这种任务非常有用。
下面是一个完成异步方法的示例,用于完成一个出色的POST请求:
public class YourFavoriteClassOfAllTime { // HttpClient应该在实例化后只被创建一次,而不应该被销毁 private static readonly HttpClient client = new HttpClient(); public async void Post() { var values = new Dictionary{ { "accountidentifier", "要发送到account字段的数据" }, { "type", "要发送到type字段的数据" }, { "seriesid", "要发送到seriesid字段的数据" } }; // 将字典转换为“可发布的对象”,如果这样说有意义的话 var content = new FormUrlEncodedContent(values); // 将对象POST到指定的URI var response = await client.PostAsync("http://127.0.0.1/api/User_Favorites.php", content); // 从服务器读取返回的答案 var responseString = await response.Content.ReadAsStringAsync(); } }
使用.NET 6,但是找不到FormUrlEncodedContent。根据文档,它应该在System.Net.Http中,但我找不到它。我安装了以命名空间命名的NuGet包,并且该包的描述中也提到了这个类,但它仍然不存在。
所以结果证明这是一个IntelliSense的错误,很多人都遇到过这个问题。我在new后面粘贴了类名,它确实检测到了,只是出于某种原因没有提供名称建议。
问题的出现原因:
根据提供的内容,问题的出现原因可能是使用HttpClient发送POST请求时出现问题。原始代码中使用了WebClient来发送POST请求,但是由于WebClient是模拟浏览器行为的,可能无法满足某些特殊需求。因此,为了满足对调用REST API的不断增长的需求,推荐使用HttpClient来发送POST请求。根据问题描述,可能是因为没有正确使用HttpClient来调用API,但是具体的API调用情况没有给出,因此无法给出具体的帮助。
解决方法:
根据问题描述,提供了一个使用HttpClient来发送POST请求的代码示例。建议尝试使用HttpClient的PostAsync方法来发送请求,并传递相应的参数。同时,也建议查看API的相关文档,确定应该使用的HTTP动词是什么。如果API文档中没有明确指定,可以尝试使用GetAsync方法来发送请求,并查看返回的结果。
最终,根据问题提供者的回答,尝试使用GetAsync方法发送请求成功,并得到了期望的结果。