C# HTTPClient 不发送请求
C# HTTPClient Not Sending Request
我有一个 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) 效果很好。
试试这个
if (response.IsSuccessStatusCode)
{
var stringData = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IEnumerable<MyList>>(stringData);
}
else
{
var statusCode= response.StatusCode);
}
我有一个 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) 效果很好。
试试这个
if (response.IsSuccessStatusCode)
{
var stringData = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IEnumerable<MyList>>(stringData);
}
else
{
var statusCode= response.StatusCode);
}