Http 请求
public static string HttpGet(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";//设置请求的方法
request.Accept = "*/*";//设置Accept标头的值
string responseStr = "";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())//获取响应
{
using (StreamReader reader =
new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
responseStr = reader.ReadToEnd();
}
}
return responseStr;
}
public static string HttpPost(string url, string data)
{
//当请求为https时,验证服务器证书
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((a, b, c, d) => true);
var req= (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "*/*";
req.Timeout = ;
req.AllowAutoRedirect = false;
string responseStr = "";
using (var writer = new StreamWriter(req.GetRequestStream()))
{
writer.Write(data);
}
using (var res = (HttpWebResponse)req.GetResponse())
{
using (var reader = new StreamReader(res.GetResponseStream(), Encoding.UTF8))
{
responseStr = reader.ReadToEnd();//获取响应
}
}
return responseStr;
}
public static string HttpPost(string url, string stream)
{
//当请求为https时,验证服务器证书
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((a, b, c, d) => true);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "*/*";
request.Timeout = ;
request.AllowAutoRedirect = false;
string responseStr = "";
using (var reqstream = request.GetRequestStream())
{
stream.Position = 0L;
stream.CopyTo(reqstream);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
responseStr = reader.ReadToEnd();//获取响应
}
}
return responseStr;
}
public static string HttpPostForm(string url, List<FormEntity> form)
{
//分割字符串
var boundary = "----" + DateTime.Now.Ticks.ToString("x");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback((a, b, c, d) => true);
request.ContentType = "multipart/form-data; boundary=" + boundary;
MemoryStream stream = new MemoryStream();
#region 将非文件表单写入内存流
foreach (var entity in form.Where(f => f.IsFile == false))
{
var temp = new StringBuilder();
temp.AppendFormat("\r\n--{0}", boundary);
temp.Append("\r\nContent-Disposition: form-data;");
temp.AppendFormat("name=\"{0}\"", entity.Name);
temp.Append("\r\n\r\n");
temp.Append(entity.Value);
byte[] b = Encoding.UTF8.GetBytes(temp.ToString());
stream.Write(b, , b.Length);
}
#endregion
#region 将文件表单写入内存流
foreach (var entity in form.Where(f => f.IsFile == true))
{
byte[] filedata = null;
var filename = Path.GetFileName(entity.Value);
//表示是网络资源
if (entity.Value.Contains("http"))
{
//处理网络文件
using (var client = new WebClient())
{
filedata = client.DownloadData(entity.Value);
}
}
else
{
//处理物理路径文件
using (FileStream file = new FileStream(entity.Value,
FileMode.Open, FileAccess.Read))
{
filedata = new byte[file.Length];
file.Read(filedata, , (int)file.Length);
}
}
var temp = string.Format("\r\n--{0}\r\nContent-Disposition: " +
"form-data; name=\"{1}\"; filename=\"{2}\"\r\n\r\n",
boundary, entity.Name, filename);
byte[] b = Encoding.UTF8.GetBytes(temp);
stream.Write(b, , b.Length);
stream.Write(filedata, , filedata.Length);
}
#endregion
//结束标记
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary +
"--\r\n");
stream.Write(foot_data, , foot_data.Length);
Stream reqStream = request.GetRequestStream();
stream.Position = 0L;
//将Form表单生成流写入请求流
stream.CopyTo(reqStream);
stream.Close();
reqStream.Close();
using (HttpWebResponse response = (HttpWebResponse)request.
GetResponse())
{
using (StreamReader reader =
new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();//获取响应
}
}
}
Http 请求的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
- nodejs之get/post请求的几种方式
最近一段时间在学习前端向服务器发送数据和请求数据,下面总结了一下向服务器发送请求用get和post的几种不同请求方式: 1.用form表单的方法:(1)get方法 前端代码: <form act ...
- ajax异步请求
做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...
- C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)
本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...
- nodejs进阶(5)—接收请求参数
1. get请求参数接收 我们简单举一个需要接收参数的例子 如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球.通过前面的进 ...
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- [转]利用URLConnection来发送POST和GET请求
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
随机推荐
- android与后台请求的例子
public static ClientResponse SendClientRequest(List<BasicNameValuePair> params){ ClientRespons ...
- mysql之触发器before和after的区别
我们先做个测试: 接上篇日志建的商品表g和订单表o和触发器 假设:假设商品表有商品1,数量是10: 我们往订单表插入一条记录: insert into o(gid,much) values(1,20) ...
- 【cube】SSAS(分析服务)优化手册
优化前注意事项 1.数据质量.数据仓库中维度表的数据质量要严格保证.比如店仓的大区.省区.管理城市等属性和店仓代码没有一对多的上下级关系,这样在设计店仓维度时,就无法建立有效的层次结构.这会拖慢查询时 ...
- c# 获取路径的几种方法
1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.Bas ...
- RAID、软RAID和硬RAID
RAID(redundant array of inexpensive disks):独立的硬盘冗余阵列,基本思想是把多个小硬盘组合在一起成为一个磁盘组,通过软件或硬件的管理达到性能提升或容量增大或增 ...
- 161028、Nginx负载均衡实现tomcat集群方案简要小结
重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...
- TI BLE CC2541的I2C主模式
由于要写TM1680, 写命令跟写数据, 所以需要使用CC2541的I2C, 2541是有硬件I2C的. tm1680.c: #include "tm1680.h" //TM168 ...
- kmemleak的使用---内存泄露检测工具【转】
转自:http://blog.csdn.net/lishenglong666/article/details/8287783 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...
- 理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比【转】
转自:http://bbs.dzsc.com/space/viewspacepost.aspx?postid=86760 摘要:逐次逼近寄存器型(SAR)模数转换器(ADC)占据着大部分的中等至高分辨 ...
- 定义提示符 PS1 PS4
PS1,如:[xiluhua@vm-xiluhua][~]$ # prompt PS1 export PATH BLUE=$(tput setaf ) PURPLE=$(tput setaf ) YE ...