C# Get与Post请求

  public class WebTool
    {
        #region GET请求
        /// <summary>
        /// GET请求
        /// </summary>
        /// <param name="strURL"></param>
        /// <param name="sMsg"></param>
        /// <returns></returns>
        public static bool SendMsgByHttpGet(string strURL, out string sMsg)
        {
            bool flag = false;
            System.GC.Collect();
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(strURL);
                request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";

                response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
                sMsg = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();

                int i = sMsg.IndexOf("<!DOCTYPE");

                if (i > 0)
                {
                    sMsg = sMsg.Substring(0, i);
                }
                flag = true;
            }
            catch (System.Threading.ThreadAbortException e)
            {
                sMsg = e.Message;
                System.Threading.Thread.ResetAbort();
                flag = false;
            }
            catch (WebException e)
            {
                flag = false;
                sMsg = e.Message;
                try
                {
                    HttpWebResponse res = (HttpWebResponse)e.Response;
                    if (res != null)
                    {
                        StreamReader sr = new StreamReader(res.GetResponseStream());
                        sMsg = sr.ReadToEnd();
                        sr.Close();
                    }
                    //LogHelper.LogWrite.WriteLogs("http_get error", "0", sMsg, "", strURL);
                }
                catch { }
            }
            catch (Exception ex)
            {
                sMsg = ex.Message;
                flag = false;
            }
            finally
            {
                //关闭连接和流
                if (response != null)
                {
                    response.Close();
                }
                if (request != null)
                {
                    request.Abort();
                }
            }

            return flag;
        }
        #endregion

        #region POST请求
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="param">发送参数 格式:参数名=参数&参数名=参数;如param1=111&param2=222</param>
        /// <returns></returns>
        public static bool SendMsgByHttpPost(string url, string param, out string sResult)
        {
            bool flag = false;
            try
            {
                //转换输入参数的编码类型,获取bytep[]数组 
                byte[] byteArray = Encoding.UTF8.GetBytes(param);
                //初始化新的webRequst
                //1. 创建httpWebRequest对象
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
                //2. 初始化HttpWebRequest对象
                webRequest.Method = "POST";
                //webRequest.ContentType = "text/html";//application/x-www-form-urlencoded
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.ContentLength = byteArray.Length;
                //3. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
                Stream newStream = webRequest.GetRequestStream();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面
                newStream.Write(byteArray, 0, byteArray.Length);
                newStream.Close();
                //4. 读取服务器的返回信息
                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
                StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                string phpend = php.ReadToEnd();
                sResult = phpend;
                flag = true;
            }
            catch (WebException e)
            {
                sResult = e.Response.ToString();
                flag = false;
            }
            catch (Exception ex)
            {
                sResult = ex.Message;
                flag = false;
            }

            return flag;
        }
        #endregion
    }
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Collections; using System.IO; using System.Text.RegularExpressions; using RE = System.Text.RegularExpressions.Regex; using System.Security.Cryptography.X509Certificates; /*************************************************************************************************************************************************** * *文件名:HttpProc.cs * *创建人:HeDaode * *日 期:2007.09.01 * *描 述:实现HTTP协议中的GET、POST请求 * *使 用:HttpProc.WebClient client = new HttpProc.WebClient(); client.Encoding = System.Text.Encoding.Default;//默认编码方式,根据需要设置其他类型 client.OpenRead("http://www.baidu.com");//普通get请求 MessageBox.Show(client.RespHtml);//获取返回的网页源代码 client.DownloadFile("http://www.codepub.com/upload/163album.rar",@"C:\163album.rar");//下载文件 client.OpenRead("http://passport.baidu.com/?login","username=zhangsan&password=123456");//提交表单,此处是登录百度的示例 client.UploadFile("http://hiup.baidu.com/zhangsan/upload", @"file1=D:\1.mp3");//上传文件 client.UploadFile("http://hiup.baidu.com/zhangsan/upload", "folder=myfolder&size=4003550",@"file1=D:\1.mp3");//提交含文本域和文件域的表单 *****************************************************************************************************************************************************/ namespace HttpProc { /// ///上传事件委托 /// /// /// public delegate void WebClientUploadEvent(object sender, HttpProc.UploadEventArgs e); /// ///下载事件委托 /// /// /// public delegate void WebClientDownloadEvent(object sender, HttpProc.DownloadEventArgs e); /// ///上传事件参数 /// public struct UploadEventArgs { /// ///上传数据总大小 ///
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值