【C#基础】HTTP发送POST二进制数据
//postdata为数组的请求方式
public byte[] POST(string Url, byte[] byteRequest)
{
byte[] responsebody;
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
//如果是发送HTTPS请求
if (Url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);
httpWebRequest.ProtocolVersion = HttpVersion.Version10;
}
else
{
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);//创建连接请求
}
httpWebRequest.Method = "POST";
if (cookieContainer != null)
{
httpWebRequest.CookieContainer = cookieContainer;
}
httpWebRequest.AllowAutoRedirect = AllowAutoRedirect;//【注意】这里有个时候在特殊情况下要设置为否,否则会造成cookie丢失
httpWebRequest.ContentType = ContentType;
httpWebRequest.Accept = Accept;
httpWebRequest.UserAgent = UserAgent;
if (!string.IsNullOrEmpty(uuid))
{
httpWebRequest.Headers.Add("seed:" + uuid + "");
} //Post请求数据,则写入传的PostData
//byte[] byteRequest = Encoding.Default.GetBytes(PostData);
httpWebRequest.ContentLength = byteRequest.Length;
using (Stream stream = httpWebRequest.GetRequestStream())
{
stream.Write(byteRequest, , byteRequest.Length);
}
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();//开始获取响应流
Stream responseStream = httpWebResponse.GetResponseStream();
responsebody = StreamToBytes(responseStream);
responseStream.Close();
httpWebRequest.Abort();
cookieContainer.Add(httpWebResponse.Cookies);
cookieCollection.Add(httpWebResponse.Cookies);
httpWebResponse.Close();
//到这里为止,所有的对象都要释放掉,以免内存像滚雪球一样
}
catch (Exception ex)
{
responsebody = Encoding.Default.GetBytes(ex.Message + ex.Source);
LogHelper.Log.Error("POST方式请求网页异常", ex);
}
return responsebody;
}
//postdata为数组的请求方式
public byte[] POST(string Url, byte[] byteRequest)
{
byte[] responsebody;
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
//如果是发送HTTPS请求
if (Url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);
httpWebRequest.ProtocolVersion = HttpVersion.Version10;
}
else
{
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);//创建连接请求
}
httpWebRequest.Method = "POST";
if (cookieContainer != null)
{
httpWebRequest.CookieContainer = cookieContainer;
}
httpWebRequest.AllowAutoRedirect = AllowAutoRedirect;//【注意】这里有个时候在特殊情况下要设置为否,否则会造成cookie丢失
httpWebRequest.ContentType = ContentType;
httpWebRequest.Accept = Accept;
httpWebRequest.UserAgent = UserAgent;
if (!string.IsNullOrEmpty(uuid))
{
httpWebRequest.Headers.Add("seed:" + uuid + "");
}
//Post请求数据,则写入传的PostData
//byte[] byteRequest = Encoding.Default.GetBytes(PostData);
httpWebRequest.ContentLength = byteRequest.Length;
using (Stream stream = httpWebRequest.GetRequestStream())
{
stream.Write(byteRequest, , byteRequest.Length);
}
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();//开始获取响应流
Stream responseStream = httpWebResponse.GetResponseStream();
responsebody = StreamToBytes(responseStream);
responseStream.Close();
httpWebRequest.Abort();
cookieContainer.Add(httpWebResponse.Cookies);
cookieCollection.Add(httpWebResponse.Cookies);
httpWebResponse.Close();
//到这里为止,所有的对象都要释放掉,以免内存像滚雪球一样
}
catch (Exception ex)
{
responsebody = Encoding.Default.GetBytes(ex.Message + ex.Source);
LogHelper.Log.Error("POST方式请求网页异常", ex);
}
return responsebody;
}
【C#基础】HTTP发送POST二进制数据的更多相关文章
- Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...
- Java模拟POST请求发送二进制数据
在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { S ...
- [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片
flash as3向php发送二进制数据,通过php保存成图片. AS端: package { import com.JPEGEncoder.JPGEncoder; import flash.disp ...
- netty实现websocket发送文本和二进制数据
原文:https://huan1993.iteye.com/blog/2433552 最近在学习netty相关的知识,看到netty可以实现 websoket,因此记录一下在netty中实现webso ...
- [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据
主类 HTTPSendPHP.as package { import com.JPEGEncoder.JPGEncoder; import com.fylib.httpRequest.HttpRequ ...
- zeroMQ消息传送的是一个固定长度的二进制数据,而TCP是通过字节流,那二进制流和字节流有啥区别?
1.TCP是面向连接的,它在UDP数据包的基础上增加了重传.流控等一系列机制,封装成基于字节流的传输层通讯协议.使用字节流,应用有点像语音或视频聊天,粒度小到一个字节,双向同时传输,连绵不断. Zer ...
- 详细解读XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
本文主要参考:MDN 分析并操作 responseXML属性 如果你使用 XMLHttpRequest 来获得一个远程的 XML 文档的内容,responseXML 属性将会是一个由 XML 文档解析 ...
- 巧用AWK处理二进制数据文件
AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件. ...
- Linux企业级项目实践之网络爬虫(16)——使用base64传输二进制数据
用http传输二进制的数据时,需要将二进制做一下转化,例如传输的int类型,将int类型之间转为char以后,丢失掉了长度的信息,如数字123456,本来只有4个字节,但是转化成文本的"12 ...
随机推荐
- vim命令---存阅
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...
- Eclipse 运行ant build.xml
在命令行cmd运行mvn clean install,ant compiler,提示上述信息,是因为 maven的这个插件要求jdk1.6,但是本地电脑环境变量jdk版本为1.7.将JAVA_HOME ...
- asp.net微信开发第十篇----使用百度编辑器编辑图文消息,上传图片、微信视频
经过几天的资料收集,终于完成了该编辑器的图片上传,视频插入功能,视频插入功能主要借用了该编辑器的插入iframe功能,如原始插件图: 修改后的插件图如下(其中我隐藏掉了一些不需要使用的插件功能): 配 ...
- php代码结尾不要添加结尾标记
如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图.
- MSSQL 简单练习回顾
这段时间,报了浦软培训的.NET,现在整理回顾下,算是个小小总结吧 为了便于操作,我没有在多个数据库间切换数据库实例,以一个总的数据库实例 test_demo为源进行的相关操作,代码的注释根据我的理解 ...
- iOS中解析 XML / JSON
JSON数据格式 1. 概述: JSON (JavaScript Object Notation) 是⼀一种轻量级的数据交换格式 基于⽂文本格式,易于⼈人阅读和编写,同时也易于机器解析和⽣生成. 2. ...
- php遍历数据库
数据库 <?php mysql_connect("localhost","root",""); mysql_set_charset(& ...
- jquery插件:点击拉出的右侧滑动菜单
就是一个停留在页面右侧的滑动菜单,点击可以拉出,带回调函数.宽高位置可以参数指定.插件代码如下: (jquery的路径请自己修改) (function($){ $.fn.sideSwitch = fu ...
- HTML5数据存储
介绍两种对象使用方法: sessionStorage方法如果关闭了浏览器,这个保存的数据就丢失. 1.sessionStorage 保存数据:sessionStorage.setItem(key,va ...
- C++ AO读取shapefile的属性值
C++ AO读取一个shapefile文件的所有属性值 #include "stdafx.h" #include "iostream.h" #inc ...