コード例 #1
0
ファイル: PostRequest.cs プロジェクト: GodLesZ/svn-dump
		/// <summary>
		/// Posts data to a specified url. Note that this assumes that you have already url encoded the post data.
		/// </summary>
		/// <param name="url">the url to post to.</param>
		/// <param name="postData">The data to post.</param>
		/// <returns>Returns the result of the post.</returns>
		public PostResult PostData(string url, string postData) {
			PostResult result = null;
			HttpWebRequest request = null;
			if (WebInfo == null) {
				throw new ArgumentException("WebInfo cant be <null>!", "WebInfo");
			}
			if (Type == PostTypeEnum.Get & postData.Length > 0) {
				if (url.Contains("?")) {
					url += "&" + postData;
				} else {
					url += "?" + postData;
				}
			}

			Uri uri = new Uri(url);
			request = (HttpWebRequest)System.Net.WebRequest.Create(uri);
			request.Credentials = CredentialCache.DefaultCredentials;
			request.CookieContainer = new CookieContainer();
			if (IgnoreCookies == false) {
				request.CookieContainer.GetCookies(uri);
			}
			if (Cookies != null) {
				request.CookieContainer.Add(this.Cookies);
			}
			if (Proxy != null) {
				request.Proxy = Proxy;
			}
			if (Timeout > 0) {
				request.Timeout = Timeout;
			}

			if (url.StartsWith("https://") == true) {
				ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
			}

			request.UserAgent = WebInfo.Useragent;
			request.Accept = WebInfo.RequestAccept;
			request.Headers.Add(HttpRequestHeader.AcceptLanguage, WebInfo.AcceptLanguage);
			request.Headers.Add(HttpRequestHeader.AcceptEncoding, WebInfo.AcceptEncoding);
			request.Headers.Add(HttpRequestHeader.AcceptCharset, WebInfo.AcceptCharset);
			request.Headers.Add(HttpRequestHeader.KeepAlive, WebInfo.KeepAlive.ToString());
			foreach (KeyValuePair<string, string> pair in AdditionalHeader) {
				request.Headers.Add(pair.Key, pair.Value);
			}
			request.Referer = UrlReferer;
			request.KeepAlive = true;
			request.Method = Type.ToString().ToUpper();
			request.AllowAutoRedirect = AutoRedirect;

			ServicePointManager.Expect100Continue = false; // sonst error

			if (Type == PostTypeEnum.Post) {
				request.ContentType = "application/x-www-form-urlencoded";
				if (postData.Length > 0) {
					UTF8Encoding encoding = new UTF8Encoding();
					byte[] requestBuf = encoding.GetBytes(postData);

					request.ContentLength = requestBuf.Length;

					try {
						Stream writeStream = request.GetRequestStream();

						writeStream.Write(requestBuf, 0, requestBuf.Length);
						writeStream.Close();
					} catch { }
				} else {
					request.ContentLength = 0;
				}
			}

			try {
				using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
					result = new PostResult(response);
				}
			} catch (Exception e) {
				System.Diagnostics.Debug.WriteLine(e);
				result = null;
			}

			return result;
		}
コード例 #2
0
        /// <summary>
        /// Posts data to a specified url. Note that this assumes that you have already url encoded the post data.
        /// </summary>
        /// <param name="url">the url to post to.</param>
        /// <param name="postData">The data to post.</param>
        /// <returns>Returns the result of the post.</returns>
        public PostResult PostData(string url, string postData)
        {
            PostResult     result  = null;
            HttpWebRequest request = null;

            if (WebInfo == null)
            {
                throw new ArgumentException("WebInfo cant be <null>!", "WebInfo");
            }
            if (Type == PostTypeEnum.Get & postData.Length > 0)
            {
                if (url.Contains("?"))
                {
                    url += "&" + postData;
                }
                else
                {
                    url += "?" + postData;
                }
            }

            Uri uri = new Uri(url);

            request                 = (HttpWebRequest)System.Net.WebRequest.Create(uri);
            request.Credentials     = CredentialCache.DefaultCredentials;
            request.CookieContainer = new CookieContainer();
            if (IgnoreCookies == false)
            {
                request.CookieContainer.GetCookies(uri);
            }
            if (Cookies != null)
            {
                request.CookieContainer.Add(this.Cookies);
            }
            if (Proxy != null)
            {
                request.Proxy = Proxy;
            }
            if (Timeout > 0)
            {
                request.Timeout = Timeout;
            }

            if (url.StartsWith("https://") == true)
            {
                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
            }

            request.UserAgent = WebInfo.Useragent;
            request.Accept    = WebInfo.RequestAccept;
            request.Headers.Add(HttpRequestHeader.AcceptLanguage, WebInfo.AcceptLanguage);
            request.Headers.Add(HttpRequestHeader.AcceptEncoding, WebInfo.AcceptEncoding);
            request.Headers.Add(HttpRequestHeader.AcceptCharset, WebInfo.AcceptCharset);
            request.Headers.Add(HttpRequestHeader.KeepAlive, WebInfo.KeepAlive.ToString());
            foreach (KeyValuePair <string, string> pair in AdditionalHeader)
            {
                request.Headers.Add(pair.Key, pair.Value);
            }
            request.Referer           = UrlReferer;
            request.KeepAlive         = true;
            request.Method            = Type.ToString().ToUpper();
            request.AllowAutoRedirect = AutoRedirect;

            ServicePointManager.Expect100Continue = false;             // sonst error

            if (Type == PostTypeEnum.Post)
            {
                request.ContentType = "application/x-www-form-urlencoded";
                if (postData.Length > 0)
                {
                    UTF8Encoding encoding   = new UTF8Encoding();
                    byte[]       requestBuf = encoding.GetBytes(postData);

                    request.ContentLength = requestBuf.Length;

                    try {
                        Stream writeStream = request.GetRequestStream();

                        writeStream.Write(requestBuf, 0, requestBuf.Length);
                        writeStream.Close();
                    } catch { }
                }
                else
                {
                    request.ContentLength = 0;
                }
            }

            try {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
                    result = new PostResult(response);
                }
            } catch (Exception e) {
                System.Diagnostics.Debug.WriteLine(e);
                result = null;
            }

            return(result);
        }