C# 接口的Get、Post、WebService请求方法一览,值得收藏
C# 接口的Get、Post、WebService请求方法一览,值得收藏
- public static class HttpHelper
- {
- const string DEFAULT_USER_AGENT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 4.0.30319)";
- const string DEFAULT_CONTENT_TYPE = "application/json";
- #region Http Get Method
- /// <summary>
- /// GET请求
- /// </summary>
- /// <param name="url"></param>
- /// <returns></returns>
- public static string Get(string url)
- {
- return Get(url, null);
- }
- /// <summary>
- /// GET请求,可以添加自定义的Header信息
- /// </summary>
- /// <returns></returns>
- public static string Get(string url, IDictionary<string, string> headerList)
- {
- var request = (HttpWebRequest)WebRequest.Create(url);
- request.UserAgent = DEFAULT_USER_AGENT;
- request.ContentType = DEFAULT_CONTENT_TYPE;
- if (headerList != null)
- {
- foreach (var header in headerList)
- {
- request.Headers.Add(header.Key, header.Value);
- }
- }
- var responseStream = request.GetResponse().GetResponseStream();
- using (var reader = new StreamReader(responseStream))
- {
- var result = reader.ReadToEnd();
- responseStream.Close();
- return result;
- }
- }
- #endregion
- /// <summary>
- /// POST请求
- /// </summary>
- /// <param name="url"></param>
- /// <param name="postData"></param>
- /// <param name="contentType"></param>
- /// <returns></returns>
- public static string Post(string url, string postData, string contentType = DEFAULT_CONTENT_TYPE)
- {
- var webClient = new WebClient();
- webClient.Headers.Add("user-agent", DEFAULT_USER_AGENT);
- webClient.Headers.Add("Content-Type", contentType);
- byte[] sendData = Encoding.UTF8.GetBytes(postData);
- byte[] responseData = webClient.UploadData(url, "POST", sendData);
- return Encoding.UTF8.GetString(responseData);
- }
- /// <summary>
- /// POST请求,并可以传入Header信息
- /// </summary>
- /// <param name="url"></param>
- /// <param name="postData"></param>
- /// <param name="headParams"></param>
- /// <returns></returns>
- public static string Post(string url, string postData, IDictionary<string, string> headParams)
- {
- var webClient = new WebClient();
- webClient.Headers.Add("user-agent", DEFAULT_USER_AGENT);
- webClient.Headers.Add("Content-Type", DEFAULT_CONTENT_TYPE);
- if (headParams != null && headParams.Count > )
- {
- foreach (var item in headParams)
- {
- if (webClient.Headers.AllKeys.Contains(item.Key))
- {
- webClient.Headers.Remove(item.Key);
- }
- webClient.Headers.Add(item.Key, item.Value);
- }
- }
- byte[] sendData = Encoding.UTF8.GetBytes(postData);
- byte[] responseData = webClient.UploadData(url, "POST", sendData);
- return Encoding.UTF8.GetString(responseData);
- }
- /// <summary>
- /// HTTP Post请求,可以传入Header信息和超时限制
- /// </summary>
- /// <param name="url"></param>
- /// <param name="content"></param>
- /// <param name="headParams"></param>
- /// <param name="timeout"></param>
- /// <returns></returns>
- public static string HttpPost(string url, string content,string ContentType, IDictionary<string, string> headParams,int timeout)
- {
- try
- {
- string result = string.Empty;
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
- req.Method = "POST";
- req.ContentType = ContentType;
- if (headParams != null && headParams.Count > )
- {
- foreach (var item in headParams)
- {
- if (req.Headers.AllKeys.Contains(item.Key))
- {
- req.Headers.Remove(item.Key);
- }
- req.Headers.Add(item.Key, item.Value);
- }
- }
- byte[] data = Encoding.UTF8.GetBytes(content);
- req.ContentLength = data.Length;
- req.Timeout = timeout * ;
- using (Stream reqStream = req.GetRequestStream())
- {
- reqStream.Write(data, , data.Length);
- reqStream.Close();
- }
- HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
- Stream stream = resp.GetResponseStream();
- //获取响应内容
- using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
- {
- result = reader.ReadToEnd();
- }
- return result;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 需要WebService支持Get调用
- /// </summary>
- public static string WebServiceGet(String url, String methodname, Hashtable pars)
- {
- HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url + "/" + methodname + "?" + HashtableToPostData(pars));
- request.Method = "GET";
- request.ContentType = "application/x-www-form-urlencoded";
- // 凭证
- request.Credentials = CredentialCache.DefaultCredentials;
- //超时时间
- request.Timeout = ;
- var response = request.GetResponse();
- var stream = response.GetResponseStream();
- StreamReader sr = new StreamReader(stream, Encoding.UTF8);
- String retXml = sr.ReadToEnd();
- sr.Close();
- return retXml;
- }
- /// <summary>
- /// 需要WebService支持Post调用
- /// </summary>
- public static string PostWebServiceByJson(String url, String methodname, Hashtable pars)
- {
- HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url + "/" + methodname);
- request.Method = "POST";
- request.ContentType = "application/json;charset=utf-8";
- request.Credentials = CredentialCache.DefaultCredentials;
- request.Timeout = ;
- byte[] data = Encoding.UTF8.GetBytes(HashtableToPostData(pars));
- request.ContentLength = data.Length;
- Stream writer = request.GetRequestStream();
- writer.Write(data, , data.Length);
- writer.Close();
- StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8);
- string retXml = sr.ReadToEnd();
- sr.Close();
- return retXml;
- }
- /// <summary>
- /// http Post调用 WebService
- /// </summary>
- public static XmlDocument QueryPostWebService(String URL,
- String MethodName, Hashtable Pars) {
- HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName);
- request.Method = "POST";
- request.ContentType = "application/x-www-form-urlencoded";
- request.Credentials = CredentialCache.DefaultCredentials;
- request.Timeout = ;
- #region 参数拼接成字符串,最后编码
- StringBuilder sb = new StringBuilder();
- foreach (string k in Pars.Keys) {
- if (sb.Length > ) {
- sb.Append("&");
- }
- sb.Append(
- HttpUtility.UrlEncode(k) + "="
- + HttpUtility.UrlEncode(Pars[k].ToString())
- );
- }
- byte[] data = Encoding.UTF8.GetBytes(sb.ToString());
- #endregion
- #region 把编码后的参数写入请求流中
- request.ContentLength = data.Length;
- Stream writer = request.GetRequestStream();
- writer.Write(data, , data.Length);
- writer.Close();
- #endregion
- #region 读取结果,创建XmlDocument对象,对象加载结果
- var response = request.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
- String retXml = sr.ReadToEnd();
- sr.Close();
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(retXml);
- #endregion
- return doc;
- }
- private static String HashtableToPostData(Hashtable ht)
- {
- StringBuilder sb = new StringBuilder();
- foreach (string k in ht.Keys)
- {
- if (sb.Length > )
- {
- sb.Append("&");
- }
- sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(ht[k].ToString()));
- }
- return sb.ToString();
- }
- }
C# 接口的Get、Post、WebService请求方法一览,值得收藏的更多相关文章
- Postman接口测试之POST、GET请求方法
一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...
- 【转】Postman接口测试之POST、GET请求方法
转自竹小冉: https://www.cnblogs.com/zhuxr/p/9009708.html 一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PU ...
- Python | 常见的反爬及解决方法,值得收藏
我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...
- 利用Python爬虫轻松挣外快的几个方法(值得收藏)
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:小猿猿er 在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩 ...
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- loadrunner通过web的post请求方法测接口 1
loadrunner通过web的post请求方法测接口 loginapi() { web_url("rest", "URL=http://192 ...
- loadrunner通过web的post请求方法测接口
loadrunner通过web的post请求方法测接口 loginapi() 模拟APP发送请求给Cloud, Action() "Name=input","Value= ...
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
在项目中,有一个功能需要请求另外一个项目的接口来获取数据.该项目接口都是通过域名请求访问.每当调用到一定阶段后都会出现未知域名,导致请求数据失败.以下是错误内容 java.net.UnknownHos ...
- kettle的HTTPPOST控件发送WSDL的webservice请求配置
1.webservice请求的URL:http://pubservice.rjhn.com.cn/AppserviceTest/JsonWcfService.svc?WSDL 2.使用SOAPUI测试 ...
随机推荐
- PHP jdtojewish() 函数
------------恢复内容开始------------ 实例 把儒略日计数转换为犹太历法的日期: <?php$jd=jdtojewish(1789430); echo $jd;?> ...
- PHP strcasecmp() 函数
实例 比较两个字符串(不区分大小写): <?php高佣联盟 www.cgewang.comecho strcasecmp("Hello world!","HELLO ...
- bzoj 3790 神奇项链 回文串 manacher|PAM
LINK:神奇项链 存在两个操作:1. 一个操作可以生成所有形式的回文串 2.一个操作可以将两个串给合并起来 如果前缀和后缀相同还可以将其并起来. 多组询问 每次询问合成一个串所需最少多少次2操作. ...
- 数据库Schema
在学习SQL的过程中,会遇到一个让你迷糊的Schema的概念.实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不 ...
- Java线程池的了解使用—筑基篇
前言 Java中的线程池是一个很重要的概念,它的应用场景十分广泛,可以被广泛的用于高并发的处理场景.J.U.C提供的线程池:ThreadPoolExecutor类,可以帮助我们管理线程并方便地并行执行 ...
- 【leetcode每日两题】-Day1-简单题
1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素 ...
- Shiro探索1. Realm
1. Realm 是什么?汉语意思:领域,范围:王国:这个比较抽象: 简单一点就是:Realm 用来对用户进行认证和角色授权的 再简单一点,一个用户怎么判断它有没有登陆?这个用户是什么角色有哪些权限? ...
- CSS部分样式知识
css文件 /* 注释内容 */ /* 选择器,其中body就是一个选择器,表示选中个body这个标签 声明块:为选择器设置样式 { 样式名: 样式值; } */ body{ background-c ...
- JS 模仿京东键盘输入内容
css代码 .search { width: 300px; height: 80px; margin: 0 auto; position: relative; } .con { display: no ...
- 【Python学习笔记】字符串拼接方法(5种)总结
字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...