Esempio n. 1
0
        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());
                };
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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>
        /// &lt;links&gt;
        ///   &lt;error id="partial_file_uploaded"&gt;Only part of the file was uploaded. Please try to upload file later&lt;/error&gt;
        /// &lt;/links&gt;
        /// </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);
                };
        }
Esempio n. 5
0
        // 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);
            }
        }
Esempio n. 6
0
        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());
            };
    }
Esempio n. 8
0
        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;
            }
        }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 10
0
        // 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;
            }
        }
Esempio n. 11
0
        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;
        }
Esempio n. 12
0
		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);
		}