C# http get与post请求方法
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, , 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, , 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 = ,
Signature = "",
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);
}
C# http get与post请求方法的更多相关文章
- HTTP请求方法详解
HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源] GET方法用来请求已被URI识别的资源.指定 ...
- HTTP请求方法
HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, ...
- iOS开发 GET、POST请求方法(NSURLSession篇)
NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...
- iOS开发 GET、POST请求方法(NSURLConnection篇)
Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误
(来源:http://www.tuicool.com/articles/Ermmmyn) HTTP请求方法: 常用方法: Get\Post\Head (1)Get方法. 取回请求URL标志的任何信息, ...
- HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...
- HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码
(请求行的)请求方法 包括: GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS 注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这 ...
- httpclient请求方法
/** * httpclient请求方法 * @param url 请求地址 * @param paramMap 请求参数 * @param ent 编码格式 gbk.utf-8 * @return ...
- HTTP请求方法对照表
根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...
- http请求方法与响应状态码
请求方法:GET POST HEAD PUT DELETE OPTIONS常用的方法是:GET POST GET提交可以在浏览器地址栏看到提交的信息 POST提交方式不显示在地址栏,相对于GET方式较 ...
随机推荐
- 在保存Bitmap的时候出现“GDI出现一般性错误”
今天开发的时候出现过一个非常奇怪的问题,在保存最终的Bitmap图片的时候,明明使用Directory.Exist(filePath)函数判断当前路径的时候,这些路径都是有用的并且都是合法的,但是就是 ...
- js簡介
js是腳本語言: js適用於服務器.pc.平板電腦.智能手機: js是最流行的編程語言,使用與html和前段: js是一種輕量級編程語言: js能被所有的現代瀏覽器執行: js和java是完全不同的編 ...
- [资源]--IOS捷径大全,众多实用小功能
一.实用工具 1.支付助手3.0(新) (扫一扫.微信扫码.微信收款.支付宝扫码.Apple Pay.AA付款.查快递.蚂蚁森林.蚂蚁庄园.彩票.股票.运动.淘票票.乘车码.生活缴费.火车票等等): ...
- 17mysql2█▓
一.数据库的查询用法 1. 数据表记录的查询: 运算符.虑重.列运算.别名.排序.聚合函数.分组 1.1数据准备 create table exam( id int primary key aut ...
- BZOJ2008 JSOI2010连通数(floyd+bitset)
一直不明白为什么要用floyd求传递闭包,直接搜不是更快嘛……不过其实可以用bitset优化,方法也比较显然.bitset是真的神奇啊,好多01状态且转移相似的东西都可以用这个优化一下. #inclu ...
- CUBA如何新增ServiceBean
简单的方法 在页面MIDDLEWARE模块,可以直接新建.编辑.删除 复杂的方法 在代码中手动实现,则需要1.添加Serviceweb-spring.xml中,添加 <entry key=&qu ...
- MT【239】离心率最大
已知点$A$为椭圆$\dfrac{x^2}{a^2}+\dfrac{y^2}{b^2}=1(a>b>0)$的左顶点,$O$为坐标原点,过椭圆的右焦点$F$作垂直于$x$轴的直线$l$.若直 ...
- MT【57】2017联赛一试解答倒数第二题:一道不等式的最值
注:康拓诺维奇不等式的应用
- 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)
洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...
- 自学Linux Shell11.6-退出shell
点击返回 自学Linux命令行与Shell脚本之路 11.6-退出shell shell运行的每一个命令都是使用 退出状态码 告诉shell它已经运行完毕.退出状态码是一个0~255的整数值,在命令结 ...