• C#模拟HTTP Form请求上传文件


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Collections.Specialized;
    
    namespace TechnetSamples
    {
    class Program
    {
    static void Main(string[] args)
    {
    string URLAuth = "https://technet.rapaport.com/HTTP/Authenticate.aspx";
    WebClient webClient = new WebClient();
    
    NameValueCollection formData = new NameValueCollection();
    formData["Username"] = "myUser";
    formData["Password"] = "myPassword";
    
    byte[] responseBytes = webClient.UploadValues(URLAuth, "POST", formData);
    string resultAuthTicket = Encoding.UTF8.GetString(responseBytes);
    webClient.Dispose();
    
    string URL = "http://technet.rapaport.com/HTTP/Upload/Upload.aspx?Method=file";
    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:\test.csv";
    formData.Clear();
    formData["ticket"] = resultAuthTicket;
    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();
    }
    
    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: application/vnd.ms-excel" + 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;
    }
    }
    }
  • 相关阅读:
    不运用正则排除出现的特定数的数字
    重绘 贝赛尔曲线特效
    缓动类gs.TweenLite示例
    画方格(二维数组)
    递归函数
    鼠标经过延时出现Hint
    鼠标控制元件移动带缓动 鼠标点击发射子弹
    A碰到B之后持续加速度的时间问题
    播放完成之后移除动画
    hdu 1032 The 3n + 1 problem (数学)
  • 原文地址:https://www.cnblogs.com/binlyzhuo/p/5969850.html
Copyright © 2020-2023  润新知