c#發(fā)送簡(jiǎn)單的post、get請(qǐng)求
POST發(fā)送請(qǐng)求及接受響應(yīng)流程?
根據(jù)目標(biāo)地址址創(chuàng)建HttpWebRequest對(duì)象
設(shè)置響應(yīng)的請(qǐng)求參數(shù)------Method、ContentType 等
使用HttpWebRequest對(duì)象獲取請(qǐng)求流并且寫入消息體 ??
使用HttpWebRequest對(duì)象獲取響應(yīng)流并讀取流中數(shù)據(jù)(在獲取過程中就是發(fā)送請(qǐng)求并接受響應(yīng))
GET發(fā)送請(qǐng)求及接受響應(yīng)流程
把目標(biāo)地址和查詢字符串拼接在一起(如果有查詢字符串)使用拼接的字符串創(chuàng)建HttpWebRequest對(duì)象
設(shè)置響應(yīng)的請(qǐng)求參數(shù)------Method、ContentType 等
使用HttpWebRequest對(duì)象獲取響應(yīng)流并讀取流中數(shù)據(jù)(在獲取過程中就是發(fā)送請(qǐng)求并接受響應(yīng))
? ?以下為代碼:
? ? ? ??兩個(gè)請(qǐng)求方法 和讀取方法
/// <summary>
/// 發(fā)送http post請(qǐng)求
/// </summary>
/// <param name="url">地址</param>
/// <param name="parameters">查詢參數(shù)集合</param>
/// <returns></returns>
public
?HttpWebResponse CreatePostHttpResponse(
string
?url, IDictionary<
string
,?
string
> parameters)
{
????
HttpWebRequest request = WebRequest.Create(url)?
as
?HttpWebRequest;
//創(chuàng)建請(qǐng)求對(duì)象
????
request.Method =?
"POST"
;
//請(qǐng)求方式
????
request.ContentType =?
"application/x-www-form-urlencoded"
;
//鏈接類型
????
//構(gòu)造查詢字符串
????
if
?(!(parameters ==?
null
?|| parameters.Count == 0))
????
{
????????
StringBuilder buffer =?
new
?StringBuilder();
????????
bool
?first =?
true
;
????????
foreach
?(
string
?key?
in
?parameters.Keys)
????????
{
?
????????????
if
?(!first)
????????????
{
????????????????
buffer.AppendFormat(
"&{0}={1}"
, key, parameters[key]);
????????????
}
????????????
else
????????????
{
????????????????
buffer.AppendFormat(
"{0}={1}"
, key, parameters[key]);
????????????????
first =?
false
;
????????????
}
????????
}
????????
byte
[] data = Encoding.UTF8.GetBytes(buffer.ToString());
????????
//寫入請(qǐng)求流
????????
using
?(Stream stream = request.GetRequestStream())
????????
{
????????????
stream.Write(data, 0, data.Length);
????????
}
????
}
????
return
?request.GetResponse()?
as
?HttpWebResponse;
}
/// <summary>
/// 發(fā)送http Get請(qǐng)求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public
?static
?HttpWebResponse CreateGetHttpResponse(
string
?url)
{
????
HttpWebRequest request = WebRequest.Create(url)?
as
?HttpWebRequest;
????
request.Method =?
"GET"
;
????
request.ContentType =?
"application/x-www-form-urlencoded"
;
//鏈接類型
????
return
?request.GetResponse()?
as
?HttpWebResponse;
}
/// <summary>
/// 從HttpWebResponse對(duì)象中提取響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為字符串
/// </summary>
/// <param name="webresponse"></param>
/// <returns></returns>
public
?string
?GetResponseString(HttpWebResponse webresponse)
{
????
using
?(Stream s = webresponse.GetResponseStream())
????
{
????????
StreamReader reader =?
new
?StreamReader(s, Encoding.UTF8);
????????
return
?reader.ReadToEnd();
????
}
}
調(diào)用
//post請(qǐng)求并調(diào)用
?
Dictionary<
string
,?
string
> dic =?
new
?Dictionary<
string
,?
string
>();
dic.Add(
"id"
,?
"4"
);
textBox1.Text = GetResponseString(CreatePostHttpResponse(
"https://www.baidu.com/"
, dic));
//get請(qǐng)求并調(diào)用
?
textBox3.Text = GetResponseString(CreateGetHttpResponse(
"https://i.cnblogs.com/EditPosts.aspx?opt=1"
));