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. pagehelper的使用和一些坑!

    [toc] ##1.1 pagehelper介绍和使用 PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件. 原本以为分页插件,应该是很简单的,然而PageHelper比我想象 ...

  2. lamt环境搭建

    目录 lamt环境搭建 安装apache 安装mysql 安装tomcat 修改配置文件 lamt环境搭建 环境说明: 系统 IP 需要安装的服务 centos7 192.168.32.125 htt ...

  3. Python 创建用户界面之 PyQt5 的使用

    之前给大伙介绍了下 tkinter,有朋友希望小帅b对其它的 Python  GUI 框架也说道说道,那么今天就来说说 PyQt5 如何创建用户界面.   很多人学习python,不知道从何学起.很多 ...

  4. Spring Boot 项目几种启动方式

    Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot c ...

  5. java 接口一

    一 接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口 的子类)来完成.这样将功能的 ...

  6. C#LeetCode刷题之#219-存在重复元素 II​​​​​​​(Contains Duplicate II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3704 访问. 给定一个整数数组和一个整数 k,判断数组中是否存在 ...

  7. python爬虫之Beautiful Soup基础知识+实例

    python爬虫之Beautiful Soup基础知识 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库.它能通过你喜欢的转换器实现惯用的文档导航,查找,修改文档 ...

  8. 极简 Node.js 入门 - 3.1 File System API 风格

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  9. Nginx的Gzip功能

    什么是HTTP压缩 有时候客户端和服务器之间会传输比较大的报文数据,这时候就占用较大的网络带宽和时长.为了节省带宽,加速报文的响应速速,可以将传输的报文数据先进行压缩,然后再进行传输. HTTP支持多 ...

  10. 基于OpenSIPS 实现分机注册服务服务器

    呼叫中心平台中坐席是不可或缺的一环,而坐席打电话自然需要使用办公分机.通常情况下我们通过软交换平台FreeSWITCH.Asterisk即可搭建分机注册服务. 但单台FreeSWITCH或Asteri ...