C# HTTPClient 不发送请求
Posted
技术标签:
【中文标题】C# HTTPClient 不发送请求【英文标题】:C# HTTPClient Not Sending Request 【发布时间】:2021-06-04 14:32:06 【问题描述】:我有一个 WPF 应用程序,我需要从远程 API 检索配置数据。 API 已经过测试并且可以正常工作,返回我认为正确的格式。我已经为响应等创建了一个数据类型,但是当我到达通过 HttpClient 获取响应的行时,它不会向 API 发送任何请求。
数据类型:-
public class Mylist
public string ItemName get; set;
public string ItemText get; set;
public string ConfigName get; set;
public string ConfigValue get; set;
public string ConfigType get; set;
代码:-
string licKey = ConfigManager.GetSetting("Lic");
string Uri = ConfigManager.GetSetting("API");
string UserAPI = ConfigManager.GetSetting("Config");
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(Uri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync(UserAPI + "?Licence=" + licKey);
var data = await response.Content.ReadAsAsync<IEnumerable<Mylist>>();
int count = 0;
List<Mylist> nudges = new List<Mylist>((IEnumerable<Nudgelist>)data);
// Do something with the data
代码为请求构建正确的 URL (https://example.com/api/Uri?Licence=licencevalue),如果手动输入到浏览器中,它会根据以下给出响应:-
<Mylist>
<ConfigName>cName</ConfigName>
<ConfigType>cType</ConfigType>
<ConfigValue>cValue</ConfigValue>
<ItemName>iName</NudgeName>
<ItemText>iText</NudgeText>
</Mylist>
<Mylist>
...
</Mylist>
当我运行上面的代码并单步执行时,我们会看到“var response = await client.GetAsync(UserAPI + "?Licence=" + licKey);" 这一行它只是跳过其余代码并进入下一个调用,不会引发错误或发现任何故障。
我已经在 API 上运行了日志,但我们没有看到请求进入,如果我们使用相同模型的代码来调用另一个 API 控制器来调用 Uri2 (https://example.com/api/Uri2?Licence=licencevalue),它可以正常工作。
【问题讨论】:
你不检查响应上的状态码,如何确定没有失败? 能否请您发布您从配置中获得的 Uri 和 UserApi。 【参考方案1】:试试这个
if (response.IsSuccessStatusCode)
var stringData = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IEnumerable<MyList>>(stringData);
else
var statusCode= response.StatusCode);
【讨论】:
谢谢,由于某种原因,现在正在向 API 发出请求并正常运行。以上是关于C# HTTPClient 不发送请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 HttpClient 和 C# 在 post 请求中发送 json
C# HttpClient:如何在 POST 请求中发送查询字符串
C# HttpClient.SendAsync 在测试某些 URL 时抛出“发送请求时发生错误”异常