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请求方法一览,值得收藏的更多相关文章

  1. Postman接口测试之POST、GET请求方法

    一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法. GET请求:请求指定的页面信息,并返回实体 ...

  2. 【转】Postman接口测试之POST、GET请求方法

    转自竹小冉: https://www.cnblogs.com/zhuxr/p/9009708.html 一.基础知识 1.HTTP的五种请求方法:GET, POST ,HEAD,OPTIONS, PU ...

  3. Python | 常见的反爬及解决方法,值得收藏

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...

  4. 利用Python爬虫轻松挣外快的几个方法(值得收藏)

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:小猿猿er 在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩 ...

  5. 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念

     http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...

  6. loadrunner通过web的post请求方法测接口 1

    loadrunner通过web的post请求方法测接口 loginapi() {     web_url("rest",          "URL=http://192 ...

  7. loadrunner通过web的post请求方法测接口

    loadrunner通过web的post请求方法测接口 loginapi() 模拟APP发送请求给Cloud, Action() "Name=input","Value= ...

  8. HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法

    在项目中,有一个功能需要请求另外一个项目的接口来获取数据.该项目接口都是通过域名请求访问.每当调用到一定阶段后都会出现未知域名,导致请求数据失败.以下是错误内容 java.net.UnknownHos ...

  9. kettle的HTTPPOST控件发送WSDL的webservice请求配置

    1.webservice请求的URL:http://pubservice.rjhn.com.cn/AppserviceTest/JsonWcfService.svc?WSDL 2.使用SOAPUI测试 ...

随机推荐

  1. PHP tanh() 函数

    实例 返回不同数的双曲正切: <?php高佣联盟 www.cgewang.comecho(tanh(M_PI_4) . "<br>");echo(tanh(0.5 ...

  2. PHP str_rot13() 函数

    实例 编码并解码字符串: <?php高佣联盟 www.cgewang.comecho str_rot13("Hello World");echo "<br&g ...

  3. C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗?

    游戏背景 <球球大作战>是Superpop一款自主研du发的免费手机网络游戏. 以玩家间的实时互动PK产生游戏乐趣为设计宗旨,通过简单的规则将玩家操作直接转化为游戏策略,体验智谋碰撞的战斗 ...

  4. 7.12 NOI模拟赛 生成树 装压dp vector装压

    LINK:生成树 这场比赛我打的真失败 T3是比较容易的 却一直刚 那道"数论" 10分其实搜一下全排列. 30分容易想到对边进行装压dp. 不过存在一些细节 可以对于一个连通块的 ...

  5. bzoj 2125 最短路 点双 圆方树

    LINK:最短路 一张仙人掌图 求图中两点最短路. \(n<=10000,Q<=10000,w>=1\) 考虑边数是多少 m>=n-1 对于一张仙人掌图 考虑先构建出来dfs树 ...

  6. PV与UV你的网站也可以

    个人博客网站分析 阅读前面的文章,有助于理解本文. 1.是时候来一个个人博客网站了 2.什么?你还没有自己的域名? 3.你的个人博客网站该上线了! 为什么需要流量分析? 各位小伙伴,请看下图,你们发现 ...

  7. 笨办法学python3练习代码13-14:argv参数变量的学习

    ex13.py  argv参数的学习 #argv:参数变量(argument variable),这是一个标准的编程术语,在其他语言中也可可以看到.argument可译为: 参数 #如果参数是用户在执 ...

  8. 十分钟搭建自己的私有NuGet服务器-BaGet

    目录 前言 开始 搭建BaGet 上传程序包 在vs中使用 其他 最后 前言 NuGet是用于微软.NET(包括 .NET Core)开发平台的软件包管理器.NuGet能够令你在项目中添加.移除和更新 ...

  9. kubernetes ingress 重定向地址错误

    环境: 有两个 kubernetes 集群: 一个版本为1.11,后面使用A集群代替,ingress 镜像版本为 0.19(quay.io/kubernetes-ingress-controller/ ...

  10. 节点操作 - DOM编程

    1. 获取节点 1.1 直接获取节点 父子关系: element.parentNode element.firstChild/element.lastChild element.firstElemen ...