public class HttpTools
{
public static string GetRequest(
string url)
{
HttpWebRequest request =
(HttpWebRequest)HttpWebRequest.Create(url);
request.Method =
"get";
HttpWebResponse response =
(HttpWebResponse)request.GetResponse();
using (StreamReader sr =
new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string result =
sr.ReadToEnd();
return result;
}
}
/// <summary>
/// HttpPostByJson
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string HttpPostByJson(
string url,
string param, WebHeaderCollection headers)
{
string strURL =
url;
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)WebRequest.Create(strURL);
//添加信息头(header)
request.Headers =
headers;
request.Method =
"POST";
request.ContentType =
"application/json;charset=UTF-8";
string paraUrlCoded =
param;
byte[] payload =
System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength =
payload.Length;
Stream writer =
request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response =
(System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s =
response.GetResponseStream();
string StrDate =
string.Empty;
StringBuilder sb =
new StringBuilder();
StreamReader Reader =
new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) !=
null)
{
sb.Append(StrDate);
}
return sb.ToString();
}
/// <summary>
/// PostRequest
/// </summary>
/// <param name="url"></param>
/// <param name="paramList"></param>
/// <returns></returns>
public static string PostRequest(
string url, Dictionary<
object,
object>
paramList)
{
HttpWebRequest request =
(HttpWebRequest)HttpWebRequest.Create(url);
StringBuilder sb =
new StringBuilder();
foreach (
var item
in paramList)
{
sb.Append(item.Key +
"=" + item.Value +
"&");
}
//将参数拼为:"name=test&pwd=123" 这种字符串格式 然后将字符串转为byte数组 最后将byte数组写入请求流中
string paramData = sb.ToString().Trim(
'&');
byte[] data =
System.Text.Encoding.UTF8.GetBytes(paramData);
//设置post方式
request.Method =
"post";
//这句不能少 不难post请求 得不到对应的响应结果
request.ContentType =
"application/x-www-form-urlencoded";
//设置请求参数的长度
request.ContentLength =
data.Length;
Stream stream =
request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
/**
* *****************注意事项********************
*
* 不管是get还是post请求最后得到的响应流不能直接stream
* 不难得不到响应结果
*
*
* 直接使用Stream 不能获取响应的结果值
*
* 要使用StreamReader才能获取响应的结果值
*
* Stream stream = response.GetResponseStream();
*
* byte[] data = new byte[2*1024*1024]
*
* int r = stream.Read(data,0,data.Length);
*
* string result = System.Text.Encoding.UTF8.GetString(data, 0, r);
*
*
* **/
HttpWebResponse response =
(HttpWebResponse)request.GetResponse();
using (StreamReader sr =
new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string result =
sr.ReadToEnd();
return result;
}
}
/// <summary>
/// 发出GET请求
/// </summary>
/// <param name="Url">请求URL</param>
/// <param name="heades">信息头</param>
/// <returns></returns>
public static string HttpGetByHeader(
string Url, WebHeaderCollection heades)
{
HttpWebRequest request =
(HttpWebRequest)WebRequest.Create(Url);
//添加信息头(header)
request.Headers =
heades;
request.Method =
"GET";
request.ContentType =
"text/html;charset=UTF-8";
using (
var response =
request.GetResponse())
{
Stream myResponseStream =
response.GetResponseStream();
StreamReader myStreamReader =
new StreamReader(myResponseStream, Encoding.UTF8);
string retString =
myStreamReader.ReadToEnd();
return retString;
}
}
}
测试代码:
[HttpGet]
public ActionResult Test()
{
string url =
"http://192.168.2.250:8092/Spread/Campaign/GetCampaignId?campaignName=string";
WebHeaderCollection header =
new WebHeaderCollection();
header["Token"] =
"AF4DAFC2-1E76-4864-AE5B-AE0FB73C64EF";
string result =
Common.HttpTools.HttpGetByHeader(url, header);
return Content(result);
}
public ActionResult TestPost()
{
string url =
"http://192.168.2.250:8092/Spread/Campaign/CreateCampaign";
CampaignArgsModel model =
new CampaignArgsModel()
{
CampaignName =
"TestPost",
FromEmail =
"786483815@qq.com",
From =
"From",
Content =
"Content",
Interval =
1,
Signature =
"1",
Subject =
"Subject",
Schedule =
DateTime.Now,
Categories =
new List<
string>() {
"TestPost" },
};
string param =
JsonConvert.SerializeObject(model);
WebHeaderCollection header =
new WebHeaderCollection();
header["Token"] =
"AF4DAFC2-1E76-4864-AE5B-AE0FB73C64EF";
string result =
Common.HttpTools.HttpPostByJson(url, param, header);
return Content(result);
}
转载于:https://www.cnblogs.com/zoro-zero/p/4143901.html
相关资源:C# http Get/POST请求封装类