【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, 0, 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, 0, 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;

        }

 

 

posted @ 2016-09-27 10:20  李0539  阅读(8441)  评论(2编辑  收藏  举报