zoukankan      html  css  js  c++  java
  • .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
  • 相关阅读:
    Log4net源码分析(一)
    ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者
    详解ASP.NET MVC应用程序请求生命周期
    ELMAH (ASP.NET错误日志处理)使用方法
    ElMAH(ASP.NET错误日志记录与通知)系列文章基础应用篇
    Log4net源码分析(三)
    Log4net 框架系列:log4net日志文件在asp.net中的应用实例记录系统错误
    ELMAH(ASP.NET错误日志记录与通知)系列文章概念篇
    Log4net源码分析(二)
    在VS2010中配制Elmah邮件发送到Gmail
  • 原文地址:https://www.cnblogs.com/wangxm123/p/4192192.html
Copyright © 2011-2022 走看看