• Http GetPost网络请求


    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net;
    using System.Net.Security;
    using System.Security.Cryptography.X509Certificates;
    using System.Text;
    
    namespace ZhuoHuiSchoolRoom.ZhuoHuiClass
    {
        class HttpWebResponseUtility
        {
            private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
    
            /// <summary> 
            /// 创建GET方式的HTTP请求 
            /// </summary> 
            /// <param name="url">请求的URL</param> 
            /// <param name="timeout">请求的超时时间</param> 
            /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> 
            /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> 
            /// <returns></returns> 
            public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)
            {
                if (string.IsNullOrEmpty(url))
                {
                    throw new ArgumentNullException("url");
                }
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                request.Method = "GET";
                request.UserAgent = DefaultUserAgent;
                if (!string.IsNullOrEmpty(userAgent))
                {
                    request.UserAgent = userAgent;
                }
                if (timeout.HasValue)
                {
                    request.Timeout = timeout.Value;
                }
                if (cookies != null)
                {
                    request.CookieContainer = new CookieContainer();
                    request.CookieContainer.Add(cookies);
                }
                return request.GetResponse() as HttpWebResponse;
            }
    
            /// <summary> 
            /// 创建POST方式的HTTP请求 
            /// </summary> 
            /// <param name="url">请求的URL</param> 
            /// <param name="str">json字符串</param> 
            /// <param name="requestEncoding">发送HTTP请求时所用的编码</param> 
            /// <returns></returns> 
            public static HttpWebResponse CreatePostHttpResponse(string url, string str, Encoding requestEncoding)
            {
                if (string.IsNullOrEmpty(url))
                {
                    throw new ArgumentNullException("url");
                }
                if (requestEncoding == null)
                {
                    throw new ArgumentNullException("requestEncoding");
                }
                HttpWebRequest request = null;
                request = WebRequest.Create(url) as HttpWebRequest;
    
                request.Method = "POST";
                request.ContentType = "application/json;charset=utf-8";
                request.UserAgent = DefaultUserAgent;
    
    
                byte[] data = requestEncoding.GetBytes(str.ToString()); //将json转为二进制流
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
    
                return request.GetResponse() as HttpWebResponse;
            }
    
            /// <summary>
            /// 创建DELETE方式的HTTP请求
            /// </summary>
            /// <param name="url">请求地址</param>
            /// <returns></returns>
            public static HttpWebResponse CreateDeleteHttpResponse(string url)
            {
                HttpWebRequest request = null;
                string urlPath = url;
                int millisecond = 30000;
                request = (HttpWebRequest)WebRequest.Create(urlPath);
                //request.Proxy = null;//关闭代理(重要)
                request.Timeout = millisecond;
                request.Method = "DELETE";
                //request.Accept = "application/json";
                //request.ContentType = "application/json";
                request.ServicePoint.Expect100Continue = false;
                return request.GetResponse() as HttpWebResponse;
            }
    
            private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
            {
                return true; //总是接受 
            }
    
            /// <summary>
            /// HttpPost上传多个文件
            /// </summary>
            /// <param name="url">请求地址</param>
            /// <param name="pathList">路径集合</param>
            /// <returns></returns>
            public static HttpWebResponse HttpUploadFile(string url, List<string> pathList)
            {
                // 设置参数
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                string boundary = "----" + DateTime.Now.Ticks.ToString("x"); // 随机分隔线
                request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
    
                byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("
    --" + boundary + "
    ");
                byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("
    --" + boundary + "--
    ");
    
                Stream postStream = request.GetRequestStream();
                for (int i = 0; i < pathList.Count; i++)
                {
                    int pos = pathList[i].LastIndexOf("\");
                    string fileName = pathList[i].Substring(pos + 1); //取文件名
                                                                      //请求头部信息 
                    StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name="file";filename="{0}"
    Content-Type:application/octet-stream
    
    ", fileName));
                    byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
    
                    FileStream fs = new FileStream(pathList[i], FileMode.Open, FileAccess.Read);
                    byte[] bArr = new byte[fs.Length];
                    fs.Read(bArr, 0, bArr.Length);
                    fs.Close();
    
    
                    postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
                    postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
                    postStream.Write(bArr, 0, bArr.Length);
    
    
                }
                postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                postStream.Close();
    
                //发送请求并获取相应回应数据
                return request.GetResponse() as HttpWebResponse;
            }
        }
    }
  • 相关阅读:
    linux基础学习6
    Linux基础学习5
    Linux基础学习4
    Linux基础学习3
    Linux基础学习2
    ASP.NET MVC学习——控制器传递数据到view的简单案例
    转载:URL链接中的不同用处
    MVC学习的心路历程
    45道SQL数据题详细超基础解析
    结束基础,开始MVC之旅!
  • 原文地址:https://www.cnblogs.com/Mzg121584668/p/7779616.html
Copyright © 2020-2023  润新知