假设我们有一个MES系统,它提供了一个RESTful API用于获取订单信息。API的URL是https://api.mes-system.com/orders/{orderId}
,其中{orderId}
是一个占位符,需要替换为实际的订单ID。
以下是demo:
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json; // 引入Json.NET库来处理JSON
public class MesApiClient
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl = "https://api.mes-system.com/orders/";
public MesApiClient()
{
// 初始化HttpClient,这里可以根据需要配置HttpClientHandler等
_httpClient = new HttpClient();
}
public async Task<Order> GetOrderAsync(string orderId)
{
if (string.IsNullOrEmpty(orderId))
{
throw new ArgumentException("Order ID is required", nameof(orderId));
}
// 构建完整的URL
var url = _baseUrl + orderId;
// 发送GET请求
HttpResponseMessage response = await _httpClient.GetAsync(url);
// 确保请求成功
response.EnsureSuccessStatusCode();
// 读取响应内容
string responseBody = await response.Content.ReadAsStringAsync();
// 将JSON响应反序列化为Order对象
Order order = JsonConvert.DeserializeObject<Order>(responseBody);
// 返回Order对象
return order;
}
}
// 假设的Order类,用于反序列化JSON响应
public class Order
{
public string OrderId { get; set; }
public string CustomerName { get; set; }
public DateTime OrderDate { get; set; }
// 其他属性...
}
// 使用示例
class Program
{
static async Task Main(string[] args)
{
// 创建MES API客户端实例
var mesApiClient = new MesApiClient();
// 假设的订单ID
string orderId = "12345";
try
{
// 调用GetOrderAsync方法来获取订单信息
Order order = await mesApiClient.GetOrderAsync(orderId);
// 输出订单信息
Console.WriteLine($"Order ID: {order.OrderId}, Customer: {order.CustomerName}, Order Date: {order.OrderDate}");
}
catch (Exception ex)
{
// 处理异常
Console.WriteLine("An error occurred: " + ex.Message);
}
}
}