同步请求=====================================================================================
byte[] data = System.Text.Encoding.UTF8.GetBytes("data=Hello,World~");//组建要提交的数据
//请求报文的参数设置
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";//post请求的时候,必须加上这行代码,不然数据无法提交到目标url
using (Stream requestStream = request.GetRequestStream())//请求流;有数据需要传递给目标url时候,需要把数据放在此流中
{
requestStream.Write(data, 0, data.Length);
}//get类型的请求,不能有【请求流】get请求如果有参数,把参数 拼接到 url中 .create()
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();//返回流
StreamReader sr = new StreamReader(responseStream,Encoding.UTF8);
string result = sr.ReadToEnd();//读取流,得到String
【从服务器获取cookie】
byte[] data = System.Text.Encoding.UTF8.GetBytes("data=Hello,World~");//组建要提交的数据
//请求报文的参数设置
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";//post请求的时候,必须加上这行代码,不然数据无法提交到目标url
request.CookieContainer = new CookieContainer();//请求地址,获取cookie 如 登录时的cookie
using (Stream requestStream = request.GetRequestStream())//请求流;有数据需要传递给目标url时候,需要把数据放在此流中
{
requestStream.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();//返回流
StreamReader sr = new StreamReader(responseStream,Encoding.UTF8);
string result = sr.ReadToEnd();//读取流,得到String
Cookie ck = response.Cookies[0];
if (ck!=null)
{
Response.Write(ck.Value);
}
【组建cookie提交个服务器】
byte[] data = System.Text.Encoding.UTF8.GetBytes("data=Hello,World~");//组建要提交的数据
//请求报文的参数设置
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";//post请求的时候,必须加上这行代码,不然数据无法提交到目标url
request.CookieContainer = new CookieContainer();//使用cookie就需要加上此行代码
Cookie c = new Cookie("name","zs");
c.Domain = "localhost";//不能就加http 和端口号 只能放域名
request.CookieContainer.Add(c);
using (Stream requestStream = request.GetRequestStream())//请求流;有数据需要传递给目标url时候,需要把数据放在此流中
{
requestStream.Write(data, 0, data.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();//返回流
StreamReader sr = new StreamReader(responseStream,Encoding.UTF8);
string result = sr.ReadToEnd();//读取流,得到String
异步请求======================================================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AsynHttpWebRequest
{
public partial class Index : System.Web.UI.Page
{
public string TestStr;
protected void Page_Load(object sender, EventArgs e)
{
DoAsynVisist();
TestStr = "外";
}
private void DoAsynVisist()
{
string data = "data=Hello World~";//模拟要传递的数据
try
{
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";//post请求的时候,必须加上这行代码,不然数据无法提交到目标url
List<object> saveData = new List<object>() { data, request };
request.BeginGetRequestStream(GetRequestStreamCallBack, saveData);//开始异步
}
catch
{//异常处理
}
}
private void GetRequestStreamCallBack(IAsyncResult ar)
{
List<object> saveData = ar.AsyncState as List<object>;//转换要传递的data,和Request对象
string data = saveData[0] as string;//要传递的数据
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)saveData[1];
Stream requestStream = request.EndGetRequestStream(ar);//请求流
requestStream.Write(byteData, 0, byteData.Length);
requestStream.Close();
request.BeginGetResponse(GetResponseCallBack,request);//一旦使用异步处理,所有的操作方法都要配套,像这里使用BeginGetResponse而不是直接GetResponse
}
private void GetResponseCallBack(IAsyncResult ar)
{
HttpWebRequest request = ar.AsyncState as HttpWebRequest;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
Stream streamResponse = response.GetResponseStream();//返回流
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();//得到结果
//模拟处理
string filePath = AppDomain.CurrentDomain.BaseDirectory + "/Result";//System.Web.HttpContext.Current.Server.MapPath("/Result"); //HttpContext.Current.Request.MapPath("/Result");//异步这里为null
TestStr = "内";
File.WriteAllText(filePath + "\\" + "1.txt", responseString + TestStr);
streamResponse.Close();
streamRead.Close();
response.Close();
}
}
}
- 利用HttpWebRequest实现实体对象的上传
一 简介 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对 ...
- C#通过WebClient/HttpWebRequest实现http的post/get方法
C#通过WebClient/HttpWebRequest实现http的post/get方法 http://www.cnblogs.com/shadowtale/p/3372735.html
- C# HttpWebRequest获取COOKIES
C# HttpWebRequest获取COOKIES byte[] bytes = Encoding.Default.GetBytes(_post); CookieContainer myCookie ...
- 在使用 HttpWebRequest Post数据时候返回 400错误
笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...
- .net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别
WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...
- C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误。
本人今天遇到的错误,C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误. 测试了很久,才发现,是安全协议问题,把安全协议加上就可以了
- C# winfrom HttpWebRequest 请求获取html网页信息和提交信息
string result =GetRequest("http://localhost:32163/DuoBao/ajax.aspx", "time=5"); ...
- ASP.NET中使用HttpWebRequest调用WCF
最近项目需要和第三网站进行数据交换,第三方网站基本都是RESTfull形式的API,但是也有的是Web Service,或者.NET里面的WCF.微软鼓励大家使用WCF替代Web Service. W ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- .Net(c#)模拟Http请求之HttpWebRequest封装
一.需求: 向某个服务发起请求获取数据,如:爬虫,采集. 二.步骤(HttpWebRequest): 无非在客户端Client(即程序)设置请求报文(如:Method,Content-Type,Age ...
随机推荐
- [改善Java代码]构造代码块会想你所想
建议37: 构造代码块会想你所想 镜像博文:http://www.cnblogs.com/DreamDrive/p/5413408.html http://www.cnblogs.com/DreamD ...
- poj 2553 强连通分支与缩点
思路:将所有强连通分支找出来,并进行缩点,然后找其中所有出度为0的连通分支,就是题目要求的. #include<iostream> #include<cstdio> #incl ...
- 10秒视频转局部GIF动画
10秒视频转局部GIF动画,微软出品的一款精致小软件. 百度云盘:http://pan.baidu.com/s/1i3SARfn
- C#/.NET使用HttpWebRequest、SqlBulkCopy从API获取数据批量插入DB
小弟新手程序员一枚,代码技术和文章水平均不才.所写文章均为对自己所写所学代码的简单记录,可能对于老手程序员营养价值不高,望莫见怪. 我工作上有个需求:从某处API接口上获取数据(大约1W条而已)并插入 ...
- 在 Tomcat 中设置 JDBCRealm
除了默认配置的 DataSourceRealm,Tomcat 还支持 JDBCRealm,它通过 JDBC 来访问记录在关系数据库里的认证信息. JDBCRealm 的配置步骤如下: 在 $TOMCA ...
- Office升级到2013版后无法登录微软账号问题
自打office从2010版升级到2013版,就再也无法登录微软账号了.每次点击登录,弹出来的框就显示:this feature has been disabled by your administr ...
- iOS开发——时间格式类
目前只实现了三个类方法, 第一个获取当前时间,以字符创的形式返回,例如"201606161532" 第二个以当前时间与给定时间的时间差(秒) 第三个以当前时间与给定时间的时间差(分 ...
- 设置TextView文字居中
有2种方法可以设置TextView文字居中: 一:在xml文件设置:android:gravity="center" 二:在程序中设置:m_TxtTitle.setGravity( ...
- pl/sql developer 中文字段显示乱码
在windows中创建一个名为“NLS_LANG”的系统环境变量,设置其值为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,然后重新启动 pl/sql developer,这样 ...
- blazeds使用remote访问
欢迎交流转载,请注明出处:http://www.cnblogs.com/shizhongtao/p/3487128.html 1.配置及说明 jar包说明 从官方上下的Blazeds中,默认的配置有 ...