用.Net写一个程序,以POST形式,调用WebApi接口,,并解析返回数据
时间: 2024-05-06 16:19:57 浏览: 96
基于.NET7平台WebApi项目
5星 · 资源好评率100%
以下是一个使用C#编写的示例程序,可以使用HttpClient类以POST形式调用WebApi接口,并解析返回数据:
```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace WebApiTest
{
class Program
{
static async Task Main(string[] args)
{
// 创建HttpClient对象
var client = new HttpClient();
// 设置请求的Base URL和请求头
client.BaseAddress = new Uri("http://api.example.com/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
// 构造请求参数
var parameters = new { name = "John", age = 30 };
// 将请求参数序列化为JSON格式
var json = JsonConvert.SerializeObject(parameters);
// 发送POST请求
var response = await client.PostAsync("api/users", new StringContent(json, System.Text.Encoding.UTF8, "application/json"));
// 检查响应是否成功
if (response.IsSuccessStatusCode)
{
// 读取响应内容
var content = await response.Content.ReadAsStringAsync();
// 将响应内容反序列化为对象
var result = JsonConvert.DeserializeObject<Response>(content);
// 输出结果
Console.WriteLine($"Name: {result.Name}");
Console.WriteLine($"Age: {result.Age}");
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
Console.ReadKey();
}
}
// 定义响应对象
class Response
{
public string Name { get; set; }
public int Age { get; set; }
}
}
```
在上面的示例程序中,我们首先创建了一个HttpClient对象,并设置了请求的Base URL和请求头。然后,我们构造了一个匿名对象作为请求参数,并将其序列化为JSON格式。接着,我们使用HttpClient的PostAsync方法发送了一个POST请求,并将请求参数作为请求体发送。最后,我们使用JsonConvert类将响应内容反序列化为一个Response对象,并输出结果。
需要注意的是,如果WebApi返回的响应数据不是JSON格式,我们需要使用其他方法将其解析为相应的对象。此外,如果WebApi返回的响应数据比较大,我们可以使用流式读取的方式来读取响应内容,以避免一次性读取所有数据造成内存占用过大的问题。
阅读全文