WPF HTTP请求(GET,POST)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks; namespace Nova.NovaiCloud.NovaiCloudCareHelper.Common
{
public class HttpRequestHelper
{
public static string HttpPost(string Url, string postDataStr,ref bool isSuccess)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
//request.CookieContainer = cookie;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return retString;
}
catch (Exception e)
{
isSuccess = false;
Console.Write(e.Message);
return e.Message;
}
} public string HttpGet(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
request.Method = "GET";
request.ContentType = "application/json"; HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return retString;
} /// <summary>
/// 创建GET方式的HTTP请求
/// </summary>
//public static HttpWebResponse CreateGetHttpResponse(string url, int timeout, string userAgent, CookieCollection cookies)
public static HttpWebResponse CreateGetHttpResponse(string url)
{
HttpWebRequest request = null;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
//对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10; //http版本,默认是1.1,这里设置为1.0
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.Method = "GET"; //设置代理UserAgent和超时
//request.UserAgent = userAgent;
//request.Timeout = timeout;
//if (cookies != null)
//{
// request.CookieContainer = new CookieContainer();
// request.CookieContainer.Add(cookies);
//}
return request.GetResponse() as HttpWebResponse;
} /// <summary>
/// 创建POST方式的HTTP请求
/// </summary>
//public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters)
{
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
//request.ProtocolVersion = HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.Method = "POST";
request.ContentType = "application/json"; //设置代理UserAgent和超时
//request.UserAgent = userAgent;
//request.Timeout = timeout; //if (cookies != null)
//{
// request.CookieContainer = new CookieContainer();
// request.CookieContainer.Add(cookies);
//}
//发送POST数据
if (!(parameters == null || parameters.Count == 0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
i++;
}
}
byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
string[] values = request.Headers.GetValues("Content-Type");
return request.GetResponse() as HttpWebResponse;
} /// <summary>
/// 获取请求的数据
/// </summary>
public static string GetResponseString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd(); }
} /// <summary>
/// 验证证书
/// </summary>
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
if (errors == SslPolicyErrors.None)
return true;
return false;
}
}
}

  

最新文章

  1. c++局域网多播
  2. windows 下 新建 点开头的文件和文件夹
  3. Intellij Idea 工具在java文件中如何避免 import .*包
  4. centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记
  5. Altium designer 小技巧
  6. html中怎么去掉input获取焦点时候的边框
  7. (转)【Android测试工具】03. ApkTool在Mac上的安装和使用(2.0版本)
  8. 利用Mathematica计算伴随矩阵
  9. UVALive 4128 Steam Roller(最短路(拆点,多状态))
  10. Object-c 创建对象
  11. 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
  12. CentOS 5.8 x64 源码安装 samba-3.6.9
  13. Swift_字符串详解(String)
  14. C#综合揭秘——细说多线程(二)
  15. Web API 之承载宿主IIS,SelfHost,OwinSelfHost
  16. Android View的重绘ViewRootImpl的setView方法
  17. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架
  18. jmeter打开其他设备转过来的历史脚本出现报错
  19. 补充appium -api
  20. Vue单页面应用

热门文章

  1. 在Linux下使用gcc运行C语言程序
  2. day67test
  3. spring boot项目启动报DataSource错误
  4. webService学习五(插入片,---监控方法)
  5. Ubuntu 解压和压缩总结
  6. JS 过滤HTML标签,取得纯文本
  7. ES6学习笔记之块级作用域
  8. mac上mamp用navigate连接不上
  9. 做移动应用使用地图API时需要注意的问题
  10. Spring Boot Redis 集成配置(转)