Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- class MultipartFormDataRequest
- {
- private List<MultipartRequestParams> reqContents = new List<MultipartRequestParams>();
- public enum MultipartRequestParamsTypes
- {
- MultipartFormData,
- MultipartFileData
- };
- class MultipartRequestParams
- {
- public MultipartRequestParamsTypes formType
- {
- get;
- set;
- }
- public string formName
- {
- get;
- set;
- }
- public string formValue
- {
- get;
- set;
- }
- public string formFile
- {
- get;
- set;
- }
- public MultipartRequestParams(string name, string value, MultipartRequestParamsTypes formType = MultipartRequestParamsTypes.MultipartFormData)
- {
- this.formType = formType;
- this.formName = name;
- if (formType == MultipartRequestParamsTypes.MultipartFormData)
- this.formValue = value;
- else
- this.formFile = value;
- }
- };
- public void Clear()
- {
- reqContents.Clear();
- }
- public void AddParam(string name, string value, MultipartRequestParamsTypes formType = MultipartRequestParamsTypes.MultipartFormData)
- {
- reqContents.Add(new MultipartRequestParams(name, value, formType));
- }
- public string Send(string url)
- {
- var wreq = HttpWebRequest.Create(url) as HttpWebRequest;
- wreq.Method = WebRequestMethods.Http.Post;
- string boundary = "----WebKitFormBoundary" + Guid.NewGuid();
- wreq.ContentType = "multipart/form-data; boundary=" + boundary;
- using (var reqStream = wreq.GetRequestStream())
- {
- byte[] bNewBoundaryLine = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
- foreach (var item in reqContents)
- {
- if (item.formType == MultipartRequestParamsTypes.MultipartFormData)
- {
- reqStream.Write(bNewBoundaryLine, 0, bNewBoundaryLine.Length);
- byte[] bFormName = Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n", item.formName));
- reqStream.Write(bFormName, 0, bFormName.Length);
- byte[] bFormValue = Encoding.UTF8.GetBytes(string.Format("{0}", item.formValue));
- reqStream.Write(bFormValue, 0, bFormValue.Length);
- }
- else
- {
- reqStream.Write(bNewBoundaryLine, 0, bNewBoundaryLine.Length);
- byte[] bFormName = Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-type: application/exe\r\n\r\n", item.formName, item.formFile));
- reqStream.Write(bFormName, 0, bFormName.Length);
- byte[] bFormValue = File.ReadAllBytes(item.formFile);
- reqStream.Write(bFormValue, 0, bFormValue.Length);
- }
- }
- byte[] bClosingboundaryLine = Encoding.UTF8.GetBytes("--" + boundary + "--");
- reqStream.Write(bClosingboundaryLine, 0, bClosingboundaryLine.Length);
- using (var resReader = new StreamReader(wreq.GetResponse().GetResponseStream()))
- return resReader.ReadToEnd();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement