1、执行Get请求下载数据
using System.Net; using System.Collections.Specialized; //发送Get请求 string url = string.Format("http://localhost:28450/api/values?p1=a&p2=b"); using (var wc = new WebClient()) { Encoding enc = Encoding.GetEncoding("UTF-8"); Byte[] pageData = wc.DownloadData(url); string re = enc.GetString(pageData); } //执行Get请求 using (WebClient webClient = new WebClient()) using(Stream stream = webClient.OpenRead("http://example.com/data") ) // 使用 StreamReader 读取 stream using(StreamReader reader= new StreamReader(stream)) { // 將 StreamReader 所读取数据转成 string string request = reader.ReadToEnd(); request.Dump(); } // DownloadString(string) using(WebClient webClient = new WebClient()) { // 指定 WebClient 的编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 从url 上取得数据 var body = webClient.DownloadString("http://example.com/data"); body.Dump(); }
2、执行Post请求上传数据
using System.Net; using System.Collections.Specialized; //发送Post请求 //UploadValues (byte[]) using (var client = new WebClient()) { var values = new NameValueCollection(); values["thing1"] = "hello"; values["thing2"] = "world"; var response = client.UploadValues("http://www.example.com/recepticle.aspx", values); var responseString = Encoding.Default.GetString(response); } //UploadString(string) using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {apitoken}"); // 准备写入的 data PostData postData = new PostData() { userId = 52013, title = "abc", body = "cjavapy" }; // 将 data 转为 json string json = JsonConvert.SerializeObject(postData); // 执行 post请求 var result = webClient.UploadString("http://www.example.com/recepticle.aspx", json); // linqpad 将 post 结果输出 result.Dump(); } // UploadData(byte[]) using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {apitoken}"); //要传的数据 string postData = "id=12354&name=abc&body=cjavapy"; //将要传的字串转为 byte array byte[] byteArray = Encoding.UTF8.GetBytes(postData); // 执行post请求 var result = webClient.UploadData("http://www.example.com/recepticle.aspx", byteArray); // linqpad 将 post结果输出 result.Dump(); }
3、执行PUT请求
方法与 POST 相同,只需在 url 与 data 间多传一个 method 的参数。
// 建立 WebClient using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {apitoken}"); // 执行 PUT 动作 var result = webClient.UploadString("http://www.example.com/recepticle.aspx","PUT",""); // linqpad 将 post 结果输出 result.Dump(); }
4、执行DELETE请求
方法与 POST 相同,只需在 url 与 data 间多传一个 method 的参数。
// 建立 WebClient using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {apitoken}"); // 执行 DELETE 动作 var result = webClient.UploadString("http://www.example.com/recepticle.aspx", "DELETE", ""); // linqpad 将 post 结果输出 result.Dump(); }
5、执行PATCH请求
方法与 POST 相同,只需在 url 与 data 间多传一个 method 的参数。
// 建立 WebClient using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {api token}"); // 准备写入的 data PostData postData = new PostData() { title = "abc", body = "cjavapy" }; // 将 data 转为 json string json = JsonConvert.SerializeObject(postData); // 执行 PATCH 动作 var result = webClient.UploadString("http://www.example.com/recepticle.aspx","PATCH", json); // linqpad 将 post 结果输出 result.Dump(); }
6、使用proxy(代理服务器)
// 建立 WebClient using (WebClient webClient = new WebClient()) { // 指定 WebClient 编码 webClient.Encoding = Encoding.UTF8; // 指定 WebClient 的 Content-Type header webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); // 指定 WebClient 的 authorization header webClient.Headers.Add("authorization", "token {api token}"); //指令 proxy address string proxyAddress = "http://127.0.0.1:8080"; //建立 proxy WebProxy myProxy = new WebProxy(new Uri(proxyAddress)); //建立 proxy 的认证信息 myProxy.Credentials = new NetworkCredential("{username}", "{password}"); //将 proxy 指定给 request 使用 webClient.Proxy = myProxy; // 准备写入的 data PostData postData = new PostData() { userId=5201314, title = "abc", body = "cjavapy" }; // 将 data 转为 json string json = JsonConvert.SerializeObject(postData); // 执行 post 动作 var result = webClient.UploadString("http://www.example.com/recepticle.aspx", json); // linqpad 将 post 结果输出 result.Dump(); }