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 array_diff() 函数

    实例 比较两个数组的值,并返回差集: <?php $a1=array("a"=>"red","b"=>"gree ...

  2. PHP vsprintf() 函数

    实例 把格式化字符串写入变量中: <?php高佣联盟 www.cgewang.com$number = 9;$str = "Beijing";$txt = vsprintf( ...

  3. 电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?

    这是微软的内核工程师 Axel Rietschin在Quora的一个回答. Windows 10 的code base 和Windows 8.x , 7 , Vista , XP , 2000 和Wi ...

  4. java.lang.ClassNotFoundException: org.apache.tomcat.util.security.Escape

    tomcat-embed-jasper 依赖中不要有版本号 技术交流群: 816227112

  5. Scala---初探

    scala语言量大特性:面向对象+函数式编程 Scala的类型 val指的是引用不可变,而不是值. 值类型 Byte Char Short Int Long Float Double 引用类型 Str ...

  6. JDK11.0.7下载及安装详细教程(win10)

    0.背景知识 JRE: Java Runtime Environment JDK:Java Development Kit JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库. ...

  7. 如何利用Python在网上接单,兼职也能月薪过万

  8. JS 本地存储笔记

    本地存储     1.数据存储在用户浏览器中的     2.设置.读取方便.甚至刷新都不会丢失数据     3.容量比较大,sessionStorange约5M,localstorage约20M    ...

  9. js 自定义属性操作

    自定义属性操作     element.属性 获取内置属性值     element.getAttribute("属性") 我们自己添加的属性叫自定义属性     element. ...

  10. AI顶会

    自己如何学习CV paper with code(每周) 基石方向 1.image classification 这个肯定要关注,这个往往都是backbone https://paperswithco ...