| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net;
- using System.IO;
- using System.Collections.Specialized;
- namespace HXX.Scanner.Biz
- {
- /// <summary>
- /// http工具
- /// </summary>
- public partial class http_helper
- {
- /// <summary>
- /// 同时带参数和文件的post
- /// </summary>
- /// <param name="url">url</param>
- /// <param name="file_list">文件路径列表</param>
- /// <param name="paramName">文件参数名</param>
- /// <param name="contentType">文件类型</param>
- /// <param name="nvc">普通参数列表</param>
- /// <returns></returns>
- public static string HttpUploadFile(string url, List<string> file_list, string paramName, string contentType, string token, NameValueCollection nvc)
- {
- string result = string.Empty;
- string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
- byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
- HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
- wr.ContentType = "multipart/form-data; boundary=" + boundary;
- wr.Method = "POST";
- wr.KeepAlive = true;
- wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
- wr.Headers.Add("Authorization:" + token);
- Stream rs = wr.GetRequestStream();
- string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
- foreach (string key in nvc.Keys)
- {
- rs.Write(boundarybytes, 0, boundarybytes.Length);
- string formitem = string.Format(formdataTemplate, key, nvc[key]);
- byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
- rs.Write(formitembytes, 0, formitembytes.Length);
- }
- rs.Write(boundarybytes, 0, boundarybytes.Length);
- foreach (var file in file_list)
- {
- //string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2};\r\naccess_token:\"{3}\"\r\n\r\n";
- string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\";\r\nContent-Type: {2};\"\r\nAuthorization: {3};\r\n\r\n";
- string header = string.Format(headerTemplate, paramName, file, contentType, token);
- byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
- rs.Write(headerbytes, 0, headerbytes.Length);
- FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
- byte[] buffer = new byte[4096];
- int bytesRead = 0;
- while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
- {
- rs.Write(buffer, 0, bytesRead);
- }
- fileStream.Close();
- byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
- rs.Write(trailer, 0, trailer.Length);
- }
- rs.Close();
- WebResponse wresp = null;
- try
- {
- wresp = wr.GetResponse();
- Stream stream2 = wresp.GetResponseStream();
- StreamReader reader2 = new StreamReader(stream2);
- result = reader2.ReadToEnd();
- }
- catch (Exception ee)
- {
- string msg = ee.Message + Environment.NewLine + Environment.NewLine;
- msg += "URL:" + url + Environment.NewLine + "Method:POST" + Environment.NewLine +
- "Content:" + "" + Environment.NewLine;
- System.Net.WebException webEE = ee as System.Net.WebException;
- if (webEE != null && webEE.Response != null)
- {
- using (System.IO.Stream st = webEE.Response.GetResponseStream())
- {
- using (System.IO.StreamReader sr = new System.IO.StreamReader(st, Encoding.UTF8))
- {
- string webmsg = sr.ReadToEnd();
- msg += Environment.NewLine + Environment.NewLine + webmsg;
- }
- }
- }
- throw new Exception(msg);
- }
- finally
- {
- wr = null;
- }
- return result;
- }
- /// <summary>
- /// 同时带参数和文件的post
- /// </summary>
- /// <param name="url">url</param>
- /// <param name="file_list">文件路径列表</param>
- /// <param name="paramName">文件参数名</param>
- /// <param name="contentType">文件类型</param>
- /// <param name="nvc">普通参数列表</param>
- /// <returns></returns>
- public static string HttpUploadFile2(string url, List<string> file_list, string paramName, string contentType, string token, NameValueCollection nvc)
- {
- string result = string.Empty;
- string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
- byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
- HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
- wr.ContentType = "multipart/form-data; boundary=" + boundary;
- wr.Method = "POST";
- wr.KeepAlive = true;
- wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
- wr.Headers.Add("Authorization:" + token);
- Stream rs = wr.GetRequestStream();
- string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
- foreach (string key in nvc.Keys)
- {
- rs.Write(boundarybytes, 0, boundarybytes.Length);
- string formitem = string.Format(formdataTemplate, key, nvc[key]);
- byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
- rs.Write(formitembytes, 0, formitembytes.Length);
- }
- foreach (var file in file_list)
- {
- rs.Write(boundarybytes, 0, boundarybytes.Length);
- string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n\r\n";
- string header = string.Format(headerTemplate, paramName, file);
- byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
- rs.Write(headerbytes, 0, headerbytes.Length);
- FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
- byte[] buffer = new byte[4096];
- int bytesRead = 0;
- while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
- {
- rs.Write(buffer, 0, bytesRead);
- }
- fileStream.Close();
- }
- byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
- rs.Write(trailer, 0, trailer.Length);
- rs.Close();
- WebResponse wresp = null;
- try
- {
- wresp = wr.GetResponse();
- Stream stream2 = wresp.GetResponseStream();
- StreamReader reader2 = new StreamReader(stream2);
- result = reader2.ReadToEnd();
- }
- catch (Exception ee)
- {
- string msg = ee.Message + Environment.NewLine + Environment.NewLine;
- msg += "URL:" + url + Environment.NewLine + "Method:POST" + Environment.NewLine +
- "Content:" + "" + Environment.NewLine;
- System.Net.WebException webEE = ee as System.Net.WebException;
- if (webEE != null && webEE.Response != null)
- {
- using (System.IO.Stream st = webEE.Response.GetResponseStream())
- {
- using (System.IO.StreamReader sr = new System.IO.StreamReader(st, Encoding.UTF8))
- {
- string webmsg = sr.ReadToEnd();
- msg += Environment.NewLine + Environment.NewLine + webmsg;
- }
- }
- }
- throw new Exception(msg);
- }
- finally
- {
- wr = null;
- }
- return result;
- }
- }
- }
|