我有一个用.NET制作的API,我正试图在前端调用它。
JSON生成得很好,但API本身根本没有从cs文件代码中调用。
public async void createTransaction(String e)
{
Transaction t = new Transaction();
t.EmployeeEmail=e;
t.ManagerEmail="test@test.com";
t.Request="admin";
var json = JsonConvert.SerializeObject(t);
var data = new StringContent(json, Encoding.UTF8, "application/json");
var url = "http://localhost:5001/ssp/addData";
using var client = new HttpClient();
var response = await client.PostAsync(url, data);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(result);
}
没有抛出任何错误,但也没有调用API。
但过了一段时间,它显示TaskCanceledException,我无法理解这一点。
任何形式的帮助都将不胜感激。
using var client = new HttpClient();
var response = await client.PostAsync(url, data);
应该是
HttpResponseMessage response;
using (var client = new HttpClient())
{
response = await client.PostAsync(url, data);
}
或
var client = new HttpClient();
var response = await client.PostAsync(url, data);
// ...
client.Dispose();
问题根本不在于代码。经过数小时的调试发现;https";在API中需要url而不是http。
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
// Pass the handler to httpclient(from you are calling api)
var client = new HttpClient(clientHandler)
添加这些之后,一切都开始正常工作。