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 内存不足的问题
FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ' ...
- 变形--位移 translate()
translate()函数可以将元素向指定的方向移动,类似于position中的relative.或以简单的理解为,使用translate()函数,可以把元素从原来的位置移动,而不影响在X.Y轴上的任 ...
- struts2的处理流程_2015.01.05
01:首先经过web.xml里面的拦截 StrutsPrepareAndExecuteFilter 02:然后struts2内置的一些拦截器或用户自定义拦截器 Interceptor 03:用户编写的 ...
- mongodb聚合内存不足解决方案
原因:mongodb每一个文档默认只有16M.聚合的结果是一个BSON文档,当超过16M大小时,就会报内存不够错误. exceeded memory limit for $group.but didn ...
- PTPX中的activity文件以及mapping文件
在不同的simulation中的capturing switching activity: SAIF:Switching Activity Interface Format,包含toggle coun ...
- zw版【转发·台湾nvp系列Delphi例程】Delphi 使用 HALCON库件COM控件数据格式转换
zw版[转发·台湾nvp系列Delphi例程]Delphi 使用 HALCON库件COM控件数据格式转换 Delphi 使用 HALCON库件COM控件数据格式转换,与IHObjectX接口有关 va ...
- YUI Reset CSS (学习摘抄)
正在使用CSS的你,用过CSS Reset吗?当然,或许你用了,却不知道正在用,比如你可能用到: *{ margin: 0; border: 0; padding: 0; } 这 ...
- ImagXpress中如何修改Alpha通道方法汇总
ImagXpress支持处理Alpha通道信息来管理图像的透明度,Alpha通道支持PNG ,TARGA和TIFF文件,同时还支持BMP和ICO文件.如果说保存的图像样式不支持Alpha通道,就将会丢 ...
- 【python cookbook】【数据结构与算法】1将序列分解为单独的变量
如果对象是可迭代的(任何序列),则可以进行分解操作,包括元组.列表.字符串.文件.迭代器以及生成器,可通过简单的一个赋值操作分解为单独的变量. 唯一要求:变量的总数和序列相吻合,否则将出错: Pyth ...
- JS调用Java函数--DWR框架
(1)dwr与ssh框架整合教程dwr框架介绍. DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJA ...