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测试 ...
随机推荐
- pagehelper的使用和一些坑!
[toc] ##1.1 pagehelper介绍和使用 PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件. 原本以为分页插件,应该是很简单的,然而PageHelper比我想象 ...
- lamt环境搭建
目录 lamt环境搭建 安装apache 安装mysql 安装tomcat 修改配置文件 lamt环境搭建 环境说明: 系统 IP 需要安装的服务 centos7 192.168.32.125 htt ...
- Python 创建用户界面之 PyQt5 的使用
之前给大伙介绍了下 tkinter,有朋友希望小帅b对其它的 Python GUI 框架也说道说道,那么今天就来说说 PyQt5 如何创建用户界面. 很多人学习python,不知道从何学起.很多 ...
- Spring Boot 项目几种启动方式
Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot c ...
- java 接口一
一 接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口 的子类)来完成.这样将功能的 ...
- C#LeetCode刷题之#219-存在重复元素 II(Contains Duplicate II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3704 访问. 给定一个整数数组和一个整数 k,判断数组中是否存在 ...
- python爬虫之Beautiful Soup基础知识+实例
python爬虫之Beautiful Soup基础知识 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库.它能通过你喜欢的转换器实现惯用的文档导航,查找,修改文档 ...
- 极简 Node.js 入门 - 3.1 File System API 风格
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- Nginx的Gzip功能
什么是HTTP压缩 有时候客户端和服务器之间会传输比较大的报文数据,这时候就占用较大的网络带宽和时长.为了节省带宽,加速报文的响应速速,可以将传输的报文数据先进行压缩,然后再进行传输. HTTP支持多 ...
- 基于OpenSIPS 实现分机注册服务服务器
呼叫中心平台中坐席是不可或缺的一环,而坐席打电话自然需要使用办公分机.通常情况下我们通过软交换平台FreeSWITCH.Asterisk即可搭建分机注册服务. 但单台FreeSWITCH或Asteri ...