using RestSharp;
using System;
using System.IO;
namespace restsharpdemo
class Program
private static RestClient client = new RestClient("http://localhost:5000/");
static void Main(string[] args)
Console.WriteLine("Hello World!");
Console.ReadLine();
private static void TestDownLoad()
string tempFile = Path.GetTempFileName();
using (var writer = File.OpenWrite(tempFile))
var req = new RestRequest("test/TestDownLoad", Method.GET);
req.ResponseWriter = responseStream =>
using (responseStream)
responseStream.CopyTo(writer);
var response = client.DownloadData(req);
private static void TestBodyJson()
var req = new RestRequest("test/TestBodyJson", Method.POST);
req.AddJsonBody(new { name = "小花", id = 23 });
var res = client.Execute(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
private static void TestPostUrlFormData()
var req = new RestRequest("test/TestPostUrlFormData", Method.POST);
req.AlwaysMultipartFormData = true;
req.AddParameter("name", "小明");
req.AddParameter("age", "20");
req.AddFile("file1", @"C:\Users\AUAS\Pictures\百度下载图片\timg.jpg");
var res = client.Execute(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
private static void TestPostUrlFormUrlencoded()
var req = new RestRequest("test/TestPostUrlFormUrlencoded", Method.POST);
req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
req.AddParameter("name", "小明");
req.AddParameter("age", "20");
var res = client.Execute(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
private static void TestUrlPara()
var req = new RestRequest("test/TestUrlPara", Method.GET);
req = new RestRequest("test/TestUrlPara", Method.POST);
req.AddParameter("name", "小明");
req.AddParameter("age", "18");
var res = client.Get(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
private static void TestPost()
var req = new RestRequest("test/testpost", Method.POST);
var res = client.Post(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
private static void TestGet()
var req = new RestRequest("test/testget", Method.GET);
var res = client.Get(req);
if (res.IsSuccessful)
Console.WriteLine($"成功:{res.Content}");
if (res.StatusCode == 0)
Console.WriteLine($"失败:网络错误:{res.ErrorMessage}");
Console.WriteLine($"失败:{(int)res.StatusCode}-{res.StatusDescription}");
.NET Core(C#)使用RestSharp可以实现一些后台Http请求相关操作,本文主要介绍通过RestSharp执行GET和POST请求,在下载很大文件时需要大量内存时通过文件流优化,以请求时自动管理cookie。
原文地址:.NET Core(C#) RestSharp GET和POST请求、下载大文件及cookie管理
RestSharp 可能是.NET 最流行的 HTTP 客户端库。它具有自动序列化和反序列化、请求和响应类型检测、多种身份验证和其他有用功能,正被数十万个项目使用。RestSharp 的主要目的是通过 HTTP 对远程资源进行同步和异步调用。顾名思义,RestSharp 的主要受众是使用 REST API 的开发人员。只要您具有要发送的资源 URI 和请求参数符合 W3C HTTP 标准,RestSharp 就 可以通过 HTTP 调用任何 API。
一、在c#中发送http请求的方式
本部分参考:《WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择》
使用.net 平台原生提供的HttpWebRequest、WebClient和HttpClient。
使用开源的工具,如:RestSharp、Flurl。
在.net core平台下已经不推荐使用HttpWebRequest、WebClient方式了
RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具体以下特性;
1、通过NuGet方便引入到任何项目(Install-Package restsharp)支持net4.0++
2、可以自动反序列化XML和JSON
3、支持自定义的序列化与反序列化
4、自动检测返回的内容类型
5、支持HTTP的GET, POST, PUT, HEAD, OPTIONS, DELETE等操作
@GetMapping("/download-client")
public ResponseEntity<Resource> downloadClient() throws IOException {
String filePath = "C:\\test.txt";
File file = n
using RestSharp;
using Newtonsoft.Json; // 用于JSON序列化/反序列化
using Newtonsoft.Json.Linq; // 用于构建JSON对象
二、构建Client
var client = new RestClient("需要请求的URI(不带参数的URL,如:https://www.baidu.com/s)");
三、构建Request
var request = new RestRequest(Method.GET); //