• C# 使用HttpWebRequest,HttpWebResponse


    C#中使用HttpWebRequest发送网络请求,HttpWebResponse接收网络请求

    具体如下:

    一、HttpWebRequest

    1、HttpWebRequest 发送Get请求:

                //请求的地址
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://api.qq.com/tok?type=cli");
                //请求方法
                req.Method = "GET";
                //数据内容类型
                req.ContentType = "application/json";
                //请求的超时时间    10秒还没出来就超时
                req.Timeout = 10000;
                //接收响应的结果
                HttpWebResponse response = (HttpWebResponse)req.GetResponse();
                //接收HTTP响应的数据流
                using (Stream resStream = response.GetResponseStream())
                {
                    //把数据流存入StreamReadr,选用编码格式
                    using (StreamReader reader = new StreamReader(resStream, Encoding.UTF8))
                    {
                        //通过ReadToEnd()把整个HTTP响应作为一个字符串取回,
                        //也可以通过 StreamReader.ReadLine()方法逐行取回HTTP响应的内容。
                        string responseContent = reader.ReadToEnd().ToString();
                    }
                }
    

    HTTP 内容类型(Content-Type)

    普通文本 "text/plain";
    JSON字符串 "application/json";
    未知类型(数据流) "application/octet-stream";
    表单数据(键值对) "application/x-www-form-urlencoded";
    表单数据(键值对)编码方式为 gb2312 "application/x-www-form-urlencoded;charset=gb2312";
    表单数据(键值对)编码方式为 utf-8 "application/x-www-form-urlencoded;charset=utf-8";
    多分部数据 "multipart/form-data";

    提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。

    该ContentType的属性包含请求的媒体类型。分配给ContentType属性的值在请求发送Content-typeHTTP标头时替换任何现有内容。

    要清除Content-typeHTTP标头,请将ContentType属性设置为null。

    2、HttpWebRequest 发送Post请求:

     public static string HttpPost(string Url, string postDataStr)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/json";//"application/x-www-form-urlencoded";
                request.ContentLength = postDataStr.Length;
                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
                writer.Write(postDataStr);
                writer.Flush();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string encoding = response.ContentEncoding;
                if (encoding == null || encoding.Length < 1)
                {
                    encoding = "UTF-8"; //默认编码 
                }
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
                string retString = reader.ReadToEnd();
                return retString;
            }
    
  • 相关阅读:
    poj2661Factstone Benchmark
    完整的微信接口类 (转)
    位运算(转载)
    PHP学习笔记之数组游标操作
    MYSQL数据库数据拆分之分库分表总结 (转)
    webservice使用
    MySQL索引类型总结和使用技巧以及注意事项 (转)
    PHP empty、isset、isnull的区别
    myisam和innodb的区别
    看看PHP迭代器的内部执行过程(转)
  • 原文地址:https://www.cnblogs.com/qingheshiguang/p/14223395.html
Copyright © 2020-2023  润新知