【问题标题】:POST API does not give any result or error on being called using HTTPClient in C# .NET在 C# .NET 中使用 HTTPClient 调用 POST API 时不会给出任何结果或错误
【发布时间】:2021-01-28 18:34:23
【问题描述】:

我有一个用 .NET 制作的 API,我试图在我的前端调用它。

JSON 生成得很好,但根本没有从 cs 文件代码调用 API 本身。

 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 我无法理解。

我们将不胜感激任何形式的帮助。

【问题讨论】:

    标签: c# .net api frontend razor-pages


    【解决方案1】:
    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();
    

    【讨论】:

    • 函数会是异步函数吗?
    • 只要你声明你的方法 async 并在其中使用 await 关键字,它就会异步运行(当然不会在代码的某些同步部分中)。
    • 其实“使用 var client = new HttpClient();”是 c# 最新的语法糖。当当前范围完成时,它会自动处理这些对象。
    • 不知道这一点,我的错。我要删除我的答案吗?
    【解决方案2】:

    问题根本不在于代码。经过几个小时的调试发现API url中的“https”是必需的,而不是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)
    

    添加后,一切都开始正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      相关资源
      最近更新 更多