在.NET中使用Flurl库可以非常高效地处理Http请求,以下是使用Flurl的一些基本用法:
一、客户端
- 引入Flurl库:在项目中引入Flurl库,可以通过NuGet包管理器来安装Flurl库。
- 创建FlurlClient对象:使用FlurlClient类来发送Http请求。可以通过以下方式创建FlurlClient对象:
var client = new FlurlClient();
- 发送Http请求:FlurlClient类提供了一系列的方法来发送Http请求,如GetAsync、PostAsync、PutAsync等。以下是一个发送GET请求的示例:
- 处理返回结果:FlurlClient的异步方法通常返回一个HttpResponseMessage对象,可以通过该对象来获取请求的返回结果。以下是一个处理返回结果的示例:
var result = await client.Request("http://localhost:5271/Home/Test1").GetAsync();
int statusCode = result.StatusCode;
Console.WriteLine("请求返回结果状态码:"+statusCode);
var responseMessage = result.ResponseMessage;
if (responseMessage.IsSuccessStatusCode)
{
var content = await responseMessage.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
else
{
Console.WriteLine("请求失败:" + result.StatusCode);
}
- 添加查询参数:可以使用Flurl库提供的Flurl.Url类来构建带有查询参数的Url。以下是一个添加查询参数的示例:
static async Task Method2()
{
var url = "http://localhost:5271/Home/Test2".SetQueryParams(new { x = 8});
var result = await client.Request(url).GetAsync();
int statusCode = result.StatusCode;
Console.WriteLine("请求返回结果状态码:" + statusCode);
var responseMessage = result.ResponseMessage;
if (responseMessage.IsSuccessStatusCode)
{
var content = await responseMessage.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
else
{
Console.WriteLine("请求失败:" + result.StatusCode);
}
}
- 添加请求头:可以使用FlurlClient的WithHeader方法来添加请求头。以下是一个添加请求头的示例:
static async Task Method3()
{
var result = await client.Request("http://localhost:5271/Home/Test3")
.WithHeader("Name", "Token0000")
.GetAsync();
int statusCode = result.StatusCode;
Console.WriteLine("请求返回结果状态码:" + statusCode);
var responseMessage = result.ResponseMessage;
if (responseMessage.IsSuccessStatusCode)
{
var content = await responseMessage.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
else
{
Console.WriteLine("请求失败:" + result.StatusCode);
}
}
- 序列化请求体(还没尝试):可以使用Flurl库提供的Flurl.HttpContent类来序列化请求体。以下是一个使用Json序列化请求体的示例:
var content = new { name = "John", age = 30 };
var result = await client.Request("http://api.example.com")
.PostJsonAsync(content);
- 反序列化返回结果(还没尝试):可以使用Flurl.Library来反序列化返回结果。以下是一个使用Json反序列化返回结果的示例:
var response = await client.Request("http://api.example.com")
.GetJsonAsync();
二、服务端接口
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public string Test1()
{
return "你好啊000000000";
}
public int Test2(int x)
{
return x*x;
}
public string Test3()
{
var stringValues = Request.Headers["Name"].ToString();
if (stringValues == "Token0000")
{
return "服务端获取的Token值:"+stringValues;
}
return null;
}
}
使用Flurl库可以大大简化在.NET中处理Http请求的代码,提高开发效率。Flurl库还提供了许多其他功能,如上传文件、下载文件、设置超时时间等,可以根据实际需求选择使用。