HttpWebRequest中的SendChunked
MSDN上说:When SendChunked is true, the request sends data to the Internet resource in segments. The Internet resource must support receiving chunked data.
传统的send request的方式是在request的header头添加ContentLength,然后把内容写在request的body中写入要发送的内容。而如果用了SendChunked的之后,就不用在header中规定ContentLength了。
往更深层次里说,其实SendChunked模式是在客户端和服务器端建立了一个管道,字节流(其实是segment)通过这个管道发送到服务端。
最近有幸同时接触到服务端和客户端,对这个有了更具体的了解,尤其在代码层面上:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
// http://www.cnblogs.com/AllanDragoon/p/3323370.html
request.KeepAlive = false;
request.ServicePoint.Expect100Continue = false;
request.AllowWriteStreamBuffering = false;
// Turn on support for GZipped response
request.AutomaticDecompression = DecompressionMethods.GZip;
// Request content type
request.ContentType = "application/octetstream";
// Request accept type
request.Accept = "application/xml";
// Set method
request.Method = method;
// 设置SendChunked为true而不必设ContentLength, 反之亦然
request.SendChunked = true;
using (var requestStream = request.GetRequestStream())
{
StreamUtil.CopyStream(stream, requestStream);
}
using (var response = request.GetResponse())
{
}
通过同时调试客户端和服务端代码,我发现,如果设SendChunked为true,那么当调用request.GetRequestStream的时候,客户端会和服务端通信(我想可能是客户端需呀和服务端建立管道连接);如果为false,则不会和服务端通信。
目前我还不知道如何在服务器端实现支持SendChunked。至少明白了当调用request.GetRequestStream的时候,客户端会和服务端通信。
HttpWebRequest中的SendChunked的更多相关文章
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需 要获取认证信息(如Cookie),所以返回的是HttpWeb ...
- (转) 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
转自:http://blog.csdn.net/zhoufoxcn/article/details/6404236 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中 ...
- 【转】在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
http://zhoufoxcn.blog.51cto.com/792419/561934 这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全 ...
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求【转载】
标签:C# HTTPS HttpWebRequest HTTP HttpWebResponse 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...
- C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现.在很多地方都需要验证用户身份才可 ...
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求(转)
通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebRe ...
- C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求
C# HttpWebRequest GET HTTP HTTPS 请求 作者:周公(zhoufoxcn) 原文:http://blog.csdn.net/zhoufoxcn 这个需求来自于我最 ...
- HttpWebRequest中的KeepAlive
一直不是非常理解.NET中HttpWebRequest的KeepAlive属性有何用处,看了这篇文章就清楚了! http://www.cnblogs.com/lwzz/archive/2011/08/ ...
- HttpWebRequest中GetResponse或者说GetRequestStream偶尔超时,或者是各种操作超时造成的假死的一些解决方案
今天用了将近一天的时间来查找这个问题的存在,不停的百度查找原因测试原因,发现解决方案很是简单,不过最好还好哦啊都解决了,在这里纪录一下,希望可以帮到你们 payload = System.Text.E ...
随机推荐
- LINUX系统备份
LINUX系统备份 =========================================================== 作者: gswwgph(http://gswwgph.itp ...
- java_类泛型承继方法
package ming; class Apple3<T>{ private T info; public Apple3(){} public Apple3(T info){ this.i ...
- 基于MVVM的知乎日报应用安卓源码
使用data binding , dagger2 , retrofit2和rxjava实现的,基于MVVM的知乎日报APP运行效果: <ignore_js_op> 使用说明: 项目结构 a ...
- typedef的使用1——引入
#include <stdio.h> #include <string.h> //#define _CRT_SRCURE_NO_WARNING #pragma warning( ...
- 关于文件的复制(用InputStream和OutputStream)
作业:将c盘的一个文本文件复制到d盘. 分析:复制原理:读取c盘文件中的数据,将这些数据写入到d盘当中,连读带写. /* * 需求:作业:将c盘的一个文本文件复制到d盘. * 思路: * 1,需要读取 ...
- Matlab plotyy函数的使用及问题总结
MATLAB函数,用来绘制双纵坐标图. 调用格式: 1.plotyy(X1,Y1,X2,Y2):以左.右不同纵轴绘制X1-Y1.X2-Y2两条曲线. 2.plotyy(X1,Y1,X2,Y2,FUN1 ...
- 【转】MyBatis学习总结(一)——MyBatis快速入门
[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...
- 基于spark实现表的join操作
1. 自连接 假设存在如下文件: [root@bluejoe0 ~]# cat categories.csv 1,生活用品,0 2,数码用品,1 3,手机,2 4,华为Mate7,3 每一行的格式为: ...
- C# 3.0 其他XML技术
使用XmlReader枚举结点: <?xml version="1.0" encoding="utf-8" standalone="yes&qu ...
- android N刷机
1. 打开开发者选项2. 在开发者选项页面打开 oem解锁3. 运行 adb reboot bootloader4. 运行 fastboot flashing unlock5. 解压你下载的刷机包 6 ...