• .net HttpWebRequest 模拟form提交


    static void Main(string[] args)
            {
                //string URLAuth = "https://technet.rapaport.com/HTTP/Authenticate.aspx";
                //WebClient webClient = new WebClient();
    
               
                //formData["Username"] = "myUser";
                //formData["Password"] = "myPassword";
    
                //byte[] responseBytes = webClient.UploadValues(URLAuth, "POST", formData);
                //string resultAuthTicket = Encoding.UTF8.GetString(responseBytes);
                //webClient.Dispose();
    
                string URL = "http://localhost:8302/upload";
                string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
                System.Net.WebRequest webRequest = System.Net.WebRequest.Create(URL);
    
                webRequest.Method = "POST";
                webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
    
                string FilePath = @"C:UsersPublicPicturesSample Picturesaa.jpg";
                NameValueCollection formData = new NameValueCollection();
                formData["ReplaceAll"] = "false";
    
                Stream postDataStream = GetPostStream(FilePath, formData, boundary);
    
                webRequest.ContentLength = postDataStream.Length;
                Stream reqStream = webRequest.GetRequestStream();
    
                postDataStream.Position = 0;
    
                byte[] buffer = new byte[1024];
                int bytesRead = 0;
    
                while ((bytesRead = postDataStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    reqStream.Write(buffer, 0, bytesRead);
                }
    
                postDataStream.Close();
                reqStream.Close();
    
                StreamReader sr = new StreamReader(webRequest.GetResponse().GetResponseStream());
                string Result = sr.ReadToEnd();
            }
    View Code
    private static Stream GetPostStream(string filePath, NameValueCollection formData, string boundary)
            {
                Stream postDataStream = new System.IO.MemoryStream();
    
                //adding form data
                string formDataHeaderTemplate = Environment.NewLine + "--" + boundary + Environment.NewLine +
                "Content-Disposition: form-data; name="{0}";" + Environment.NewLine + Environment.NewLine + "{1}";
    
                foreach (string key in formData.Keys)
                {
                    byte[] formItemBytes = System.Text.Encoding.UTF8.GetBytes(string.Format(formDataHeaderTemplate,
                    key, formData[key]));
                    postDataStream.Write(formItemBytes, 0, formItemBytes.Length);
                }
    
                //adding file data
                FileInfo fileInfo = new FileInfo(filePath);
    
                string fileHeaderTemplate = Environment.NewLine + "--" + boundary + Environment.NewLine +
                "Content-Disposition: form-data; name="{0}"; filename="{1}"" +
                Environment.NewLine + "Content-Type: image/jpeg" + Environment.NewLine + Environment.NewLine;
    
                byte[] fileHeaderBytes = System.Text.Encoding.UTF8.GetBytes(string.Format(fileHeaderTemplate,
                "UploadCSVFile", fileInfo.FullName));
    
                postDataStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);
    
                FileStream fileStream = fileInfo.OpenRead();
    
                byte[] buffer = new byte[1024];
    
                int bytesRead = 0;
    
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    postDataStream.Write(buffer, 0, bytesRead);
                }
    
                fileStream.Close();
    
                byte[] endBoundaryBytes = System.Text.Encoding.UTF8.GetBytes("
    --" + boundary + "--
    ");
                postDataStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
    
                return postDataStream;
            }
    View Code
  • 相关阅读:
    HDU5818 Joint Stacks 左偏树,可并堆
    HDU1512 ZOJ2334 Monkey King 左偏树
    BZOJ3626 [LNOI2014]LCA 树链剖分 线段树
    BZOJ4034 [HAOI2015]树上操作 树链剖分
    BZOJ1146 [CTSC2008]网络管理Network 树链剖分 主席树 树状数组
    BZOJ1968 [Ahoi2005]COMMON 约数研究 数论
    BZOJ2759 一个动态树好题 LCT
    BZOJ3669 [Noi2014]魔法森林 LCT
    HDFS要点
    HDFS(0.20.2)运营中急救方案
  • 原文地址:https://www.cnblogs.com/wangxm123/p/4192192.html
Copyright © 2020-2023  润新知