栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用C#.net在Winform中调用和使用Web API

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C#.net在Winform中调用和使用Web API

您可以看一下以下文档教程:

  • 在ASP.NET Web API 2中从.NET客户端调用Web API

但是,作为答案,我将在此处分享一个简短的分步指南,介绍如何以Windows形式调用和使用Web API:

  1. 安装软件包 -安装
    Microsoft.AspNet.WebApi.Client
    NuGet软件包(Web API客户端库)。

打开工具菜单→NuGet程序包管理器→程序包管理器控制台→在程序包管理器控制台窗口中,键入以下命令:

    Install-Package Microsoft.AspNet.WebApi.Client

您可以通过右键单击项目并选择“管理NuGet软件包”来安装软件包。

  1. 设置HttpClient- 创建的实例

    HttpClient
    并设置其
    baseAddress
    DefaultRequestHeaders
    。例如:

    // In the class

    static HttpClient client = new HttpClient();

    // Put the following pre where you want to initialize the class
    // It can be the static constructor or a one-time initializer
    client.baseAddress = new Uri(“http://localhost:4354/api/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue(“application/json”));

  2. 发送请求 -要发送请求,可以使用以下方法

    HttpClient

    • GET: ,
      GetAsync
      ,,
      GetStringAsync``GetByteArrayAsync``GetStreamAsync
    • POST: ,,
      PostAsync``PostAsJsonAsync``PostAsXmlAsync
    • PUT: ,,
      PutAsync``PutAsJsonAsync``PutAsXmlAsync
    • Delete:
      DeleteAsync
    • 另一个HTTP方法:
      Send

注意: 请记住,要为这些方法设置请求的URL,因为在定义时已指定了基本URL

client
,则此处为这些方法设置了路径,路由值和查询字符串,例如:

    // Assuming http://localhost:4354/api/ as baseAddress var response = await client.GetAsync("products");

要么

    // Assuming http://localhost:4354/api/ as baseAddress var product = new Product() { Name = "P1", Price = 100, Category = "C1" };var response = await client.PostAsJsonAsync("products", product);
  1. 得到回应

要获得响应,如果您使用了类似的方法

GetStringAsync
,那么您会将响应作为字符串使用,并且足以解析该响应。如果响应是您知道的Json内容,则可以轻松地使用package
JsonConvert
类对其
Newtonsoft.Json
进行解析。例如:

    // Assuming http://localhost:4354/api/ as baseAddress var response = await client.GetStringAsync("product");var data = JsonConvert.DeserializeObject<List<Product>>(response);this.productBindingSource.DataSource = data;

如果你已经使用的方法,如

GetAsync
PostAsJsonAsync
与你有
HttpResponseMessage
那么你可以使用
ReadAsAsync
ReadAsByteArrayAsync
ReadAsStreamAsync
,`ReadAsStringAsync,例如:

    // Assuming http://localhost:4354/api/ as baseAddress var response = await client.GetAsync("products");var data = await response.Content.ReadAsAsync<IEnumerable<Product>>();this.productBindingSource.DataSource = data;

性能提示

  • HttpClient
    是一种类型,只能创建一次然后共享。因此,不要在每次要使用它时都将其放在using块中。而是,创建类的实例并通过静态成员共享它。要了解有关此内容的更多信息,请查看不正确的实例化反模式

设计技巧

  • 尽量避免将与Web API相关的代码与您的应用程序逻辑混合在一起。例如,假设您有一个产品Web API服务。然后要使用它,首先定义一个
    IProductServieClient
    接口,然后在实现中将所有WEB API逻辑放入
    ProductWebAPIClientService
    要实现的内部,以包含与WEB API交互的代码。您的应用程序应依赖
    IProductServieClient
    。(SOLID原则,依赖倒置)。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号