您的位置:首页 > 理论基础 > 计算机网络

asp.net 自定义 Http Post,Get,WebClient ,TcpClient 请求url地址

2014-09-26 15:13 447 查看
/// <summary>

        /// 发生post请求

        /// </summary>

        /// <param name="Url"></param>

        /// <param name="postDataStr"></param>

        /// <returns></returns>

        public static string HttpPost(string Url, string postDataStr)

        {

            try

            {

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

                request.Method = "POST";

                request.ContentType = "application/x-www-form-urlencoded";

                request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);

                Stream myRequestStream = request.GetRequestStream();

                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));

                myStreamWriter.Write(postDataStr);

                myStreamWriter.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                Stream myResponseStream = response.GetResponseStream();

                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

                string retString = myStreamReader.ReadToEnd();

                myStreamReader.Close();

                myResponseStream.Close();

                return retString;

            }

            catch (Exception ex)

            {

                return ex.Message;

            }

        }

        /// <summary>

        /// 发生get请求

        /// </summary>

        /// <param name="Url"></param>

        /// <param name="postDataStr"></param>

        /// <returns></returns>

        public static string HttpGet(string Url, string getDataStr)

        {

            //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (getDataStr == "" ? "" : "?") + getDataStr);

            request.Method = "GET";

            request.ContentType = "text/html;charset=utf-8";

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream myResponseStream = response.GetResponseStream();

            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();

            myResponseStream.Close();

            return retString;
        }

    public static string sendHttp(string WebUrl, string CEncoding)

        {

            WebClient myClient = new WebClient();

            myClient.Headers.Add("Accept: */*");

            myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X
MetaSr 1.0)");

            myClient.Headers.Add("Accept-Language: zh-cn");

            myClient.Headers.Add("Content-Type: multipart/form-data");

            myClient.Headers.Add("Accept-Encoding: gzip, deflate");

            myClient.Headers.Add("Cache-Control: no-cache");

            return Encoding.GetEncoding(CEncoding).GetString(myClient.DownloadData(string.Format(WebUrl)));

        }

   

    public static string Call(string url)

    {

        string ret = "{\"ok\":101,\"msg\":\"net err\"}";

        TcpClient clientSocket = null;

        Stream readStream = null;

        try

        {

            clientSocket = new TcpClient();

            Uri uri = new Uri(url);

            clientSocket.Connect(uri.Host, uri.Port);

            StringBuilder RequestHeaders = new StringBuilder();//用来保存HTML协议头部信息

            RequestHeaders.Append("GET ").Append(uri.PathAndQuery).Append(" HTTP/1.1\r\n");

            RequestHeaders.Append("Host:").Append(uri.Host).Append("\r\n");

            RequestHeaders.Append("User-Agent:ycweb\r\n"); // "Accept:*/*\r\nAccept-Language:zh-cn\r\n"

            RequestHeaders.Append("Connection:close\r\n\r\n");

            // 发送

            byte[] request = Encoding.UTF8.GetBytes(RequestHeaders.ToString());

            clientSocket.Client.Send(request);

            // 接收

            readStream = clientSocket.GetStream();

            StreamReader sr = new StreamReader(readStream, Encoding.UTF8);

            string l;

            // 读取头

            for (int i=0; i<100; ++i)

            {

                l = sr.ReadLine();

                if (l == null)

                    break;

                if (l.Length == 0)

                    break;

            }

            // 读取内容

            ret = sr.ReadToEnd();

        }catch

        {

        }

        // 关闭流

        if (readStream != null)

            readStream.Close();

        if (clientSocket != null)

            clientSocket.Close();

        return ret;

    }

  

/// <summary>

        /// 拟远程HTTP的POST请求方式构造并获取处理结果

        /// </summary>

        /// <param name="GATEWAY_NEW">支付宝网关地址</param>

        /// <param name="sParaTemp">请求参数数组</param>

        /// <returns>处理结果</returns>

        public static string PostRequest(string url, string param,string encode)

        {

            Encoding code = Encoding.GetEncoding(encode);

            //待请求参数数组字符串

            string strRequestData =param;

            //把数组转换成流中所需字节数组类型

            byte[] bytesRequestData = code.GetBytes(strRequestData);

            //构造请求地址

            string strUrl = url;

            //请求远程HTTP

            string strResult = "";

            try

            {

                //设置HttpWebRequest基本信息

                HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl);

                myReq.Method = "post";

                myReq.ContentType = "application/x-www-form-urlencoded";

                //填充POST数据

                myReq.ContentLength = bytesRequestData.Length;

                Stream requestStream = myReq.GetRequestStream();

                requestStream.Write(bytesRequestData, 0, bytesRequestData.Length);

                requestStream.Close();

                //发送POST数据请求服务器

                HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();

                Stream myStream = HttpWResp.GetResponseStream();

                //获取服务器返回信息

                StreamReader reader = new StreamReader(mySt
4000
ream, code);

                StringBuilder responseData = new StringBuilder();

                String line;

                while ((line = reader.ReadLine()) != null)

                {

                    responseData.Append(line);

                }

                //释放

                myStream.Close();

                strResult = responseData.ToString();

            }

            catch (Exception exp)

            {

                strResult = "报错:" + exp.Message;

            }

            return strResult;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: