public static string ExecutePostRequest( Uri url, Dictionary <string, object> postData, FileInfo fileToUpload, string fileMimeType, string fileFormKey ) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.AbsoluteUri); request.Headers.Add("HTTP_ACCEPT", "application/json"); request.Method = "POST"; request.KeepAlive = true; string boundary = CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); using (WebResponse response = request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { return(reader.ReadToEnd()); }; }
public static Task <string> PostMultipartFormString(string url, Dictionary <string, string> data, Stream file, string name, string mimeType, string formKey) { var request = (HttpWebRequest)CreateWebRequest(url, POST); request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; //Creates a multipart/form-data boundary. var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; using (var requestStream = request.GetRequestStream()) { data.WriteMultipartFormData(requestStream, boundary); if (file != null) { file.WriteMultipartFormData(name, requestStream, boundary, mimeType, formKey); } var endBytes = Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); } return(ExecuteWebRequestAsync(request)); }
private HttpWebResponse GetResponse2(string method, string entity, string operation, Dictionary <string, string> postData = null, string getData = null, Dictionary <string, string> headers = null) { if (getData != null) { operation += getData; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + API_DOMAIN + DL + entity + DL + operation); request.Method = method; request.ContentType = "application/x-www-form-urlencoded"; if (headers != null) { foreach (var h in headers) { request.Headers.Add(h.Key.ToString(), h.Value.ToString()); } } if (method == LBSYunNetSDKMethods.POST.ToString()) { if (postData != null) { var boundary = "----" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; request.ServicePoint.Expect100Continue = false; Stream dataStream = request.GetRequestStream(); postData.WriteMultipartFormData(dataStream, boundary); byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--\r\n"); dataStream.Write(endBytes, 0, endBytes.Length); dataStream.Close(); } } else if (method == LBSYunNetSDKMethods.GET.ToString()) { } HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); //this.tmp_infos = new Hashtable(); //foreach (var hl in response.Headers) //{ // string name = (string)hl; // if (name.Length > 7 && name.Substring(0, 7) == "x-upyun") // { // this.tmp_infos.Add(name, response.Headers[name]); // } //} } catch (Exception e) { throw e; } return(response); }
/// <summary> /// Executes a web request against ImageShack and parses the result. /// </summary> /// <param name="url">The URL to execute against.</param> /// <param name="postData">Name/value pairs to send to ImageShack.</param> /// <param name="fileToUpload">Info about a file to upload.</param> /// <returns> /// A parsed XML document with the results. /// </returns> /// <remarks> /// <para> /// An error response from ImageShack looks like this: /// </para> /// <code> /// <links> /// <error id="partial_file_uploaded">Only part of the file was uploaded. Please try to upload file later</error> /// </links> /// </code> /// <para> /// These error responses will be thrown as <see cref="System.InvalidOperationException"/> /// where the message is the text from the error. /// </para> /// </remarks> /// <exception cref="System.NotSupportedException"> /// Thrown if there is no current internet connection. /// </exception> /// <exception cref="InvalidOperationException"> /// Thrown if ImageShack returns an error. /// </exception> protected XDocument ExecuteWebRequest(Uri url, Dictionary <string, string> postData, FileInfo fileToUpload) { if (!PluginHttpRequest.InternetConnectionAvailable) { throw new NotSupportedException("You must have an internet connection avialable to upload to ImageShack."); } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.AbsoluteUri); request.AllowAutoRedirect = true; request.Proxy = PluginHttpRequest.GetWriterProxy(); request.Timeout = 120000; // Increase timeout from default 100s to 120s to account for timeouts. if (postData != null || fileToUpload != null) { request.Method = "POST"; request.KeepAlive = true; // Articles on formatting multipart/form-data requests: // http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data // http://www.15seconds.com/Issue/001003.htm // http://blog.dmbcllc.com/2009/11/10/upload-a-file-via-webrequest-using-csharp/ string boundary = CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { string imageMimeType = this.GetImageMimeType(fileToUpload); fileToUpload.WriteMultipartFormData(requestStream, boundary, imageMimeType, "fileupload"); } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); } using (WebResponse response = request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string results = reader.ReadToEnd(); XDocument doc = XDocument.Parse(results); var error = doc.Root.Elements("error").FirstOrDefault(); if (error != null) { throw new InvalidOperationException("An error occurred while communicating with ImageShack: " + error.Value); } return(doc); }; }
// success: return the location of the new resource // failure: return empty string // use this function to post multipart data, where postData contains each segment // and fileToUpload is the file to upload // TODO make one POST function instead of two public static XmlDocument PostResource(string uri, Dictionary <string, string> postData, FileInfo fileToUpload, string fileMimeType, string fileFormKey) { string authUri = Authentication.PrepareAuthenticatedUri(uri); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(authUri); request.Method = "POST"; request.KeepAlive = true; string boundary = MultipartBoundary.CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); System.Diagnostics.Debug.Print(String.Format("Received status code: {0}", response.StatusCode.ToString())); // 201 if (response.StatusCode == HttpStatusCode.Created) { Stream receiveStream = response.GetResponseStream(); string s = NormalizeData(receiveStream); XmlDocument doc = new XmlDocument(); doc.LoadXml(s); return(doc); } // 400 else if (response.StatusCode == HttpStatusCode.BadRequest) { return(null); } else { return(null); } }
public static string ExecutePostRequest(string apikey, Dictionary <string, string> postData, FileInfo fileToUpload, string fileMimeType, string fileFormKey) { string url = "https://api.telegram.org/bot" + apikey + "/"; WebRequest request = WebRequest.Create(url); request.Method = "POST"; string boundary = CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); using (WebResponse response = request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { return(reader.ReadToEnd()); }; }
public string ExecutePostRequest( Uri url, Dictionary <string, string> postData, FileInfo[] fileToUpload, string fileMimeType ) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.AbsoluteUri); request.Method = "POST"; request.KeepAlive = true; string boundary = CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); int cou = 0; if (fileToUpload != null) { foreach (FileInfo fo in fileToUpload) { fo.WriteMultipartFormData(requestStream, boundary, fileMimeType, "data[ReviewImage][" + cou + "][file]"); cou += 1; } } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); using (WebResponse response = request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { return(reader.ReadToEnd()); }; }
internal static string ExecuteMultipartFormPostRequest( HttpWebRequest webRequest, Dictionary<string, string> postData, Stream fileToUpload, string fileNameToUpload, string fileMimeType, string fileFormKey) { webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.KeepAlive = true; //Creates a multipart/form-data boundary. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = webRequest.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(fileNameToUpload, requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); try { using (WebResponse response = webRequest.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { return reader.ReadToEnd(); }; } catch (WebException webException) { if (webException.Response != null) { var statusCode = ((HttpWebResponse)webException.Response).StatusCode; var stripeError = new StripeError(); if (webRequest.RequestUri.ToString().Contains("oauth")) stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream())); else stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream()), "error"); throw new StripeException(statusCode, stripeError, stripeError.Message); } throw; } }
public string UploadImages(string locationUrl, string cryptedStepCheck, VehicleInfo vehicle) { string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); var postData = new Dictionary <string, string>();; postData.Add("cryptedStepCheck", cryptedStepCheck); postData.Add("a", "add"); postData.Add("go", "add image"); var request = (HttpWebRequest)WebRequest.Create(locationUrl); request.ProtocolVersion = HttpVersion.Version10; request.Host = "post.craigslist.org"; request.Method = "POST"; request.UserAgent = UserAgent; request.Headers.Add("Accept-Language: en-US,en;q=0.5"); request.Headers.Add("Accept-Encoding: gzip, deflate"); request.KeepAlive = true; request.AllowAutoRedirect = false; request.ContentType = "multipart/form-data; boundary=" + boundary; request.Accept = Accept; request.Referer = locationUrl + "?s=editimage"; request.CookieContainer = CookieContainer; request.CookieContainer.Add(CookieCollection); request.Timeout = 1000000; try { string[] carImage = vehicle.CarImageUrl.Split(new[] { ",", "|" }, StringSplitOptions.RemoveEmptyEntries); var tempDir = GetTemporaryDirectory(vehicle.Vin); using (WebClient client = new WebClient()) { foreach (var item in carImage) { client.DownloadFile(new Uri(item), tempDir + "/" + Path.GetFileName(item)); } } using (Stream requestStream = request.GetRequestStream()) { postData.WriteMultipartFormData(requestStream, boundary); var dirInfo = new DirectoryInfo(tempDir); if (dirInfo.Exists) { var limit = 1; foreach (FileInfo fileToUpload in dirInfo.GetFiles().OrderBy(f => f.CreationTime)) { if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(requestStream, boundary, "image/jpeg", "file"); } if (limit > 24) { break; // Only allow to upload 24 images } limit++; } } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); } } catch (Exception) { //Error with images } try { using (WebResponse response = request.GetResponse()) { return(response.Headers["Location"]); } } catch (Exception) { return(string.Empty); } }
// success: return the location of the new resource // failure: return empty string // use this function to post multipart data, where postData contains each segment // and fileToUpload is the file to upload // TODO make one POST function instead of two public static XmlDocument PostResource(string uri, Dictionary<string, string> postData, FileInfo fileToUpload, string fileMimeType, string fileFormKey) { string authUri = Authentication.PrepareAuthenticatedUri(uri); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(authUri); request.Method = "POST"; request.KeepAlive = true; string boundary = MultipartBoundary.CreateFormDataBoundary(); request.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = request.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); System.Diagnostics.Debug.Print(String.Format("Received status code: {0}", response.StatusCode.ToString())); // 201 if (response.StatusCode == HttpStatusCode.Created) { Stream receiveStream = response.GetResponseStream(); string s = NormalizeData(receiveStream); XmlDocument doc = new XmlDocument(); doc.LoadXml(s); return doc; } // 400 else if (response.StatusCode == HttpStatusCode.BadRequest) { return null; } else { return null; } }
internal static string ExecuteMultipartFormPostRequest( HttpWebRequest webRequest, Dictionary<string, string> postData, Stream fileToUpload, string fileNameToUpload, string fileMimeType, string fileFormKey, StripeRequestOptions requestOptions = null) { string result = null; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.KeepAlive = true; //Creates a multipart/form-data boundary. string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); webRequest.ContentType = "multipart/form-data; boundary=" + boundary; Stream requestStream = webRequest.GetRequestStream(); postData.WriteMultipartFormData(requestStream, boundary); if (fileToUpload != null) { fileToUpload.WriteMultipartFormData(fileNameToUpload, requestStream, boundary, fileMimeType, fileFormKey); } byte[] endBytes = Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); // Attempt communication up to 3 times, in case of temporary Stripe outtage or other reason // Idempotency string on charges will prevent multiple transactions const int maxAttempts = 3; for (var attempt = 1; attempt <= maxAttempts; attempt++) { try { using (WebResponse response = webRequest.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { result = reader.ReadToEnd(); }; } catch (WebException webException) { if (webException.Response != null) { var statusCode = ((HttpWebResponse)webException.Response).StatusCode; var stripeError = new StripeError(); if (webRequest.RequestUri.ToString().Contains("oauth")) stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream())); else stripeError = Mapper<StripeError>.MapFromJson(ReadStream(webException.Response.GetResponseStream()), "error"); if (attempt == maxAttempts) throw new StripeException(statusCode, stripeError, stripeError.Message); } if (attempt == maxAttempts) throw; } if (!string.IsNullOrEmpty(result)) break; } return result; }
public static Task<string> PostMultipartFormString(string url, Dictionary<string, string> data, Stream file, string name, string mimeType, string formKey) { var request = (HttpWebRequest)CreateWebRequest(url, POST); request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; //Creates a multipart/form-data boundary. var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; using (var requestStream = request.GetRequestStream()) { data.WriteMultipartFormData(requestStream, boundary); if (file != null) { file.WriteMultipartFormData(name, requestStream, boundary, mimeType, formKey); } var endBytes = Encoding.UTF8.GetBytes("--" + boundary + "--"); requestStream.Write(endBytes, 0, endBytes.Length); requestStream.Close(); } return ExecuteWebRequestAsync(request); }