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测试 ...
随机推荐
- luogu P4294 [WC2008]游览计划
LINK:游览计划 斯坦纳树例题. 斯坦纳树是这样一类问题:带权无向图上有K个关键点 求出包含这K个点的最小生成树. 也就是说 求最小生成树 但是 并不是整张图 仅限于K个点. 可以发现我们利用克鲁斯 ...
- [转]Java CPU 100% 排查技巧
文章来源:微信公众号:猿天地 平时多积累一点,这样在遇到问题的时候就少句求人的话.如果在实际的开发中遇到CPU 100%问题,要怎么排查呢?如果你没有遇到过这个问题,请先自己思考10s,如果你遇到过, ...
- 【CF600E】Lomset gelral 题解(树上启发式合并)
题目链接 题目大意:给出一颗含有$n$个结点的树,每个节点有一个颜色.求树中每个子树最多的颜色的编号和. ------------------------- 树上启发式合并(dsu on tree). ...
- time模块 random模块
time模块 time.sys等模块是C语言实现的,内置到了python解释器的.而不是py文件. 导入模块的时候,优先到python解释器,然后才会找py文件. #时间戳 #计算 # print(t ...
- 033_go语言中的打点器
代码演示 package main import "fmt" import "time" func main() { ticker := time.NewTic ...
- 入门python有什么好的书籍推荐?纯干货推荐,你值得一看 python基础,爬虫,数据分析
Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...
- 《Python测试开发技术栈—巴哥职场进化记》—软件测试工程师“兵器库”
上文<Python测试开发技术栈-巴哥职场进化记>-初来乍到,请多关照 我们介绍了巴哥入职后见到了自己的导师华哥,第一次参加团队站会,认识了团队中的开发小哥哥和产品小姐姐以及吃到了公司的加 ...
- Linux安装配置PHPmyadmin
进官网下载zip安装包 wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.zip 安装 ...
- 社区观点 | 理解比原链MOV链上交换协议
去中心化交换协议的发展 从Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x协议,去中心化交换协议也经过了好几代发展和很多模式的探索,每一代都通过前面的协议的痛点来进 ...
- CSS概述(二)
目录 CSS背景属性 设置背景颜色 background-color 设置背景图像 background-image 设置背景重复 background-repeat 设置背景定位 backgroun ...