//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二进制数据的更多相关文章

  1. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...

  2. Java模拟POST请求发送二进制数据

    在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { S ...

  3. [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片

    flash as3向php发送二进制数据,通过php保存成图片. AS端: package { import com.JPEGEncoder.JPGEncoder; import flash.disp ...

  4. netty实现websocket发送文本和二进制数据

    原文:https://huan1993.iteye.com/blog/2433552 最近在学习netty相关的知识,看到netty可以实现 websoket,因此记录一下在netty中实现webso ...

  5. [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据

    主类 HTTPSendPHP.as package { import com.JPEGEncoder.JPGEncoder; import com.fylib.httpRequest.HttpRequ ...

  6. zeroMQ消息传送的是一个固定长度的二进制数据,而TCP是通过字节流,那二进制流和字节流有啥区别?

    1.TCP是面向连接的,它在UDP数据包的基础上增加了重传.流控等一系列机制,封装成基于字节流的传输层通讯协议.使用字节流,应用有点像语音或视频聊天,粒度小到一个字节,双向同时传输,连绵不断. Zer ...

  7. 详细解读XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度

    本文主要参考:MDN 分析并操作 responseXML属性 如果你使用 XMLHttpRequest 来获得一个远程的 XML 文档的内容,responseXML 属性将会是一个由 XML 文档解析 ...

  8. 巧用AWK处理二进制数据文件

    AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件. ...

  9. Linux企业级项目实践之网络爬虫(16)——使用base64传输二进制数据

    用http传输二进制的数据时,需要将二进制做一下转化,例如传输的int类型,将int类型之间转为char以后,丢失掉了长度的信息,如数字123456,本来只有4个字节,但是转化成文本的"12 ...

随机推荐

  1. hdu 2304

    题意: 插座插空问题 水题.....只要知道最后一个不需要插即可.... 直接贴代码.. AC代码: #include <iostream> using namespace std; in ...

  2. Git系列(1) Windows下Git服务器搭建

    作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...

  3. toString结果

    String[] str = new String[] { "a", "b", "c" }; System.out.println(str) ...

  4. PHP编程规范

    好的编程规范不仅是对阅读者的负责,也是对自身的负责: ----割---- 一直以来我都是以php函数的风格来写php,所有变量,函数,类都使用小写,单词之间以下划线隔开,一直比较排斥驼峰式的代码规范, ...

  5. SQL Server 2008将数据导出为脚本

    之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  6. CocoaPods报错:The dependency `xxx` is not used in any concrete target

    官网是这样给推荐的: 在创建Podfile的时候,用这种格式使用, platform :ios, '8.0' use_frameworks! target 'MyApp' do pod 'AFNetw ...

  7. Php 常用类

    图表库下面的类库可以让你很简单就能创建复杂的图表和图片.当然,它们需要GD库的支持.pChart - 一个可以创建统计图的库.Libchart - 这也是一个简单的统计图库.JpGraph - 一个面 ...

  8. 东软实训1 -jsp内置对象及其常用方法

    JSP 的内置对象及方法详细说明 一. request 对象 客户端的请求信息被封装在 request 对象中,通过它才能了解到客户的需 求,然后做出响应.它是 HttpServletRequest ...

  9. java加载配置文件

    有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...

  10. 六种方式实现hibernate查询

    最近在学习Hibernate的基本内容,刚好在项目中有用到,基本上都是用到哪就学哪. 今天看看六种方式实现hibernate查询......... 分别是HQL查询,对象化查询Criteria方法,动 ...