以下是學習筆記:
一,HttpWebRequest方式
1,WebRequest方式 Get請求
#region 方法3 .WebRequest方式 Get請求
public static string HttpWebRequest_Get(string url)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
Encoding encoding = Encoding.UTF8;
//構造一個Web請求的對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
//獲取web請求的響應的內容
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
private void button3_Click(object sender, EventArgs e)
{
//string ss = HttpWebRequest_Get("http://localhost:55837/api/product");
string ss = HttpWebRequest_Get(txt_get_url.Text);
this.textBox3.Text += ss;
}
#endregion

2,WebRequest方式 Get帶參數請求
#region WebRequest方式 Get帶參數請求
private void button6_Click(object sender, EventArgs e)
{
string id = this.txt_get_parameter.Text;
string ss = HttpWebRequest_Get(txt_get_url.Text+ "?"+id.Trim());//帶參數
this.textBox6.Text += ss;
}
#endregion

3,WebRequest方式 Post請求
#region 方法3 WebRequest方式 Post請求
public static string HttpWebRequest_Post(string url, string body)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "POST"; //Post請求方式
request.Accept = "text/html, application/xhtml+xml, */*";
// 內容類型
//request.ContentType = "application/json";//參數格式: {username:"admin",password:"123} 如果參數不是json類型會報錯
request.ContentType =
"application/x-www-form-urlencoded"; //參數:username=admin&password=123 如果參數是json格式或者參數寫錯不會報錯的
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//上面的代碼會有異常出現,更改如下:
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
}
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
private void button4_Click(object sender, EventArgs e)
{
string url = this.txt_post_url.Text;
string body = this.txt_post_parameter.Text;
string ss = HttpWebRequest_Post(url, body);
this.textBox4.Text += ss;
}
#endregion

4,HttpWebRequest方式 Delete請求:
#region WebRequest方式 Delete請求
/// <summary>
/// API發送DELETE請求,返回狀態:200成功,201失敗
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string HttpWebRequest_Delete(string url)
{
//Web訪問對象64
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
string serviceUrl = url;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
myRequest.Method = "DELETE";
// 獲得接口返回值68
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
string ReturnXml = reader.ReadToEnd();
reader.Close();
myResponse.Close();
return ReturnXml;
}
private void button7_Click(object sender, EventArgs e)
{
if (txt_delete_parameter.Text.Trim().Length > 0)
{
HttpWebRequest_Delete(txt_delete_rul.Text+"?"+txt_delete_parameter.Text);//帶參數刪除
}
else
{
HttpWebRequest_Delete(txt_delete_rul.Text);//全部刪除
}
}

5,HttpWebRequest方式 Put請求:
見下面的通用方法
二,HttpClient 方式
1,HttpClient 方式 Get請求
#region 方法4 HttpClient 方式 Get請求
public static string HttpClienGet(string url)
{
HttpClient hc = new HttpClient();
string html= hc.GetStringAsync(url).Result;
return html;
}
private void btn_HttpClentGet_Click(object sender, EventArgs e)
{
string url = this.txt_get_url.Text;
string html = HttpClienGet(url);
txt_HttpClentGet_Result.Text += html;
}
#endregion
2,HttpClient 方式 Post請求
#region 方法4 HttpClient 方式 Post請求
public static async void HttpClientPost(string url)
{
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.None };
using (var httpclient = new HttpClient(handler))
{
httpclient.BaseAddress = new Uri(url);
var content = new FormUrlEncodedContent(new Dictionary<string, string>()
{
{"name", "杜宗英"},
{"age", "18"},
{"gender","false" }
});
var response = await httpclient.PostAsync(url, content);
string responseString = await response.Content.ReadAsStringAsync();
MessageBox.Show(responseString);
}
}
private void button5_Click(object sender, EventArgs e)
{
string url = this.txt_post_url.Text;
HttpClientPost(url);
}
#endregion
三,WebClient 方式
1,WebClient方式 Post請求
#region WebClient方式 Post請求
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <param name="body">傳遞的參數</param>
/// <returns></returns>
public static string WebClientPost(string url,string body)
{
byte[] postData = Encoding.UTF8.GetBytes(body);//編碼,尤其是漢字,事先要看下抓取網頁的編碼方式
WebClient webClient=new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必須加的header,如果改為GET方式的話就去掉這句話即可
byte[] responseData = webClient.UploadData(url, "POST", postData);//得到返回字符流
string srcString = Encoding.UTF8.GetString(responseData);//解碼
return srcString;
}
private void btn_WebClient_Post_Click(object sender, EventArgs e)
{
string url = this.txt_post_url.Text;
string body = this.txt_post_parameter.Text;
string srcString = WebClientPost(url, body);
this.txt_WebClient_Post.Text += srcString;
}
#endregion
四,HttpWebRequest通用方法
public string CommonHttpWebRequest(string data, string uri, string type)
{
//Web訪問對象,構造請求的url地址
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
string serviceUrl = uri;
//構造http請求的對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceUrl);
//轉成網絡流
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
//設置
request.Method = type;
request.ContentLength = buf.Length;
//myRequest.ContentType = "application/json";//如果參數不是json格式會報錯
request.ContentType ="application/x-www-form-urlencoded";
request.MaximumAutomaticRedirections = 1;
request.AllowAutoRedirect = true;
// 發送請求
Stream newStream = request.GetRequestStream();
newStream.Write(buf, 0, buf.Length);
newStream.Close();
// 獲得接口返回值
//HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//上面的代碼會有異常出現,更改如下:
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string ReturnXml = reader.ReadToEnd();
reader.Close();
response.Close();
return ReturnXml;
}
1,Delete請求代碼:
private void btn_webapi_delete_Click(object sender, EventArgs e)
{
string url = txt_delete_rul.Text;
string data = txt_delete_parameter.Text;
if (data.Trim().Length > 0)
{
CommonHttpWebRequest(data, url + "?" + data, "DELETE");//帶參數刪除
}
else
{
CommonHttpWebRequest(data, url, "DELETE"); ;//全部刪除
}
}
2,Post請求代碼:
private void btn_webapi_post_Click(object sender, EventArgs e)
{
string url = txt_post_url.Text;
string data = txt_post_parameter.Text;
string res = CommonHttpWebRequest(data, url, "POST");
this.txt_webapi_get_data.Text += res;
}
3,Put 請求代碼:
private void btn_webapi_put_Click(object sender, EventArgs e)
{
string url = txt_put_url.Text;
string data = txt_put_parameter.Text;
string res = CommonHttpWebRequest(data, url, "PUT");
this.txt_webapi_get_data.Text += res;
}

