C#调用WebApi请求常用的两种方式
|
admin
2025年1月2日 11:29
本文热度 4678
|
1.WebRequest方式
引用dll
using System.IO;using System.Net;using System.Threading.Tasks;
//Postpublic static string HttpPost(string url, string body){ Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/json";
byte[] buffer = encoding.GetBytes(body); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); }}
//GETpublic static string HttpGet(string url){ Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { return reader.ReadToEnd(); }}
2.HttpClient 方式
static HttpClient client = new HttpClient();
//根据 ID 获取产品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 async Task RunAsync(){ client.BaseAddress = new Uri("http://localhost:64195/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));
try { Product product = new Product { Name = "Gizmo", Price = 100, Category = "Widgets" };
var url = await CreateProductAsync(product); Console.WriteLine($"Created at {url}");
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();}
阅读原文:原文链接
该文章在 2025/1/2 11:47:13 编辑过