在C#.NET中使用HTTPClient调用POST API时,不会给出任何结果或错误



我有一个用.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)

添加这些之后,一切都开始正常工作。

相关内容

最新更新