• HttpClient使用


    using System;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Threading.Tasks;
    
    namespace HttpClientSample
    {
        public class Product
        {
            public string Id { get; set; }
            public string Name { get; set; }
            public decimal Price { get; set; }
            public string Category { get; set; }
        }
    
        class Program
        {
            static HttpClient client = new HttpClient();
    
            static void ShowProduct(Product product)
            {
                Console.WriteLine($"Name: {product.Name}	Price: " +
                    $"{product.Price}	Category: {product.Category}");
            }
    
            static async Task<Uri> CreateProductAsync(Product product)
            {
                HttpResponseMessage response = await client.PostAsJsonAsync(
                    "api/products", product);
                response.EnsureSuccessStatusCode();
    
                // return URI of the created resource.
                return response.Headers.Location;
            }
    
            static async Task<Product> GetProductAsync(string path)
            {
                Product product = null;
                HttpResponseMessage response = await client.GetAsync(path);
                if (response.IsSuccessStatusCode)
                {
                    product = await response.Content.ReadAsAsync<Product>();
                }
                return product;
            }
    
            static async Task<Product> UpdateProductAsync(Product product)
            {
                HttpResponseMessage response = await client.PutAsJsonAsync(
                    $"api/products/{product.Id}", product);
                response.EnsureSuccessStatusCode();
    
                // Deserialize the updated product from the response body.
                product = await response.Content.ReadAsAsync<Product>();
                return product;
            }
    
            static async Task<HttpStatusCode> DeleteProductAsync(string id)
            {
                HttpResponseMessage response = await client.DeleteAsync(
                    $"api/products/{id}");
                return response.StatusCode;
            }
    
            static void Main()
            {
                RunAsync().GetAwaiter().GetResult();
            }
    
            static async Task RunAsync()
            {
                // Update port # in the following line.
                client.BaseAddress = new Uri("http://localhost:64195/");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));
    
                try
                {
                    // Create a new product
                    Product product = new Product
                    {
                        Name = "Gizmo",
                        Price = 100,
                        Category = "Widgets"
                    };
    
                    var url = await CreateProductAsync(product);
                    Console.WriteLine($"Created at {url}");
    
                    // Get the product
                    product = await GetProductAsync(url.PathAndQuery);
                    ShowProduct(product);
    
                    // Update the product
                    Console.WriteLine("Updating price...");
                    product.Price = 80;
                    await UpdateProductAsync(product);
    
                    // Get the updated product
                    product = await GetProductAsync(url.PathAndQuery);
                    ShowProduct(product);
    
                    // Delete the product
                    var statusCode = await DeleteProductAsync(product.Id);
                    Console.WriteLine($"Deleted (HTTP Status = {(int)statusCode})");
    
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
    
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    分享微云普通用户不限速下载方法
    PS基础之移动工具和分布对齐
    操作系统的概念、功能和目标
    又拍云+PicGo搭建图床教程
    05 数组
    04 循环结构
    02 数据类型_变量_运算符_表达式
    03 流程控制
    05 方法_递归
    win7下使用telnet的方法
  • 原文地址:https://www.cnblogs.com/zmaiwxl/p/8932592.html
Copyright © 2020-2023  润新知