Asp.net IO流发送Post请求详细解析(通常用于和其他系统对接例如微信公众号)

代码:
 
public string PostWebRequest(string posturl,string paramdata,Encoding dataencod)
        {
            string ret = string.Empty;
            try
            {
                //字节数组用来接收以 (例如utf-8西欧英文编码)重新编码的字节数组
                //GetBytes()方法 将指定字符串中的所有字符编码为一个字节数组
                byte[] byteArry = dataencod.GetBytes(paramdata);
                //WebRequest  类为向统一资源定位符发出的请求
                //HttpWebRequest 外发请求,可以发出一个HTTP请求,干的活,比较多,可以模拟一个独立的客户端,向网站发送请求。
                HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(new Uri(posturl));
                webreq.Method = "post";
                //数据类型 以下表单的提交数据的格式也是默认格式(不设置即为该值)    即 键值对类型 
                webreq.ContentType = "application/x-www-form-urlencoded";
                /*ContentLength 要发送到 Internet 资源的数据的字节数。 默认值为 -1,
                 * 该值指示尚未设置该属性,并且没有要发送的请求数据 
                 * http的GET请求时,不要手动设置ContentLength的值,不需要, 这句会自动算出,post是必须的
                */
                webreq.ContentLength = byteArry.Length;
                /* webreq.Proxy 如果你没有一个代理,你必须设置代理属性为空的所有Web客户端和WebRequest对象。
                 * 否则,框架可能会尝试“自动检测”您的代理设置,最多可为您的请求添加30秒。
                 * 如果你想知道为什么你的Web请求执行得很慢,这很可能是它!
                */
                webreq.Proxy = null;
                /*
                 * GetRequestStream 方法会 尝试“自动检测”您的代理设置 最多30秒 ,
                 * 用法:获取用于写入请求数据的 Stream 对象,返回值为stream。
                 */
                Stream newstream = webreq.GetRequestStream();
                /*
                 *将数据写入流
                 * Write(byte[] buffer, int offset, int count);
                 * buffer--字节数组  
                 * offset--偏移量 简单来说就是从多少号字符开始写入,前面的舍弃不写入
                 * count 字节数组长度
                 */
                newstream.Write(byteArry, 0, byteArry.Length);
                //关闭流
                newstream.Close();
                /*HttpWebResponse 类用于生成发送 HTTP 请求和接收 HTTP 响应的 HTTP 独立客户端应用程序
                 *    WebResponse 类提供来自统一资源标识符 (URI) 的响应
                 * GetResponse()--返回来自 Internet 资源的响应。返回值类型:System.Net.WebResponse
                */
                HttpWebResponse response =(HttpWebResponse) webreq.GetResponse();
                /*
                 * StreamReader 类实现一个 System.IO.TextReader,使其以一种特定的编码从字节流中读取字符
                 * StreamReader()实例化 以流和编码方式
                 * GetResponseStream()-- 获取流,该流用于读取来自服务器的响应的体。
                 * 和GetRequestStream()--获取用于写入请求数据的 Stream 对象 
                 * 用法相反
                 */
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                //ReadToEnd()--从流的当前位置到末尾读取所有字符
                ret = sr.ReadToEnd();


                sr.Close();
                response.Close();
               
            }
            catch (Exception)
            {
                throw;
            }
            return ret;
        }

方法的三个参数依次是:

posturl:请求地址,

paramdata:参数,

dataencod:编码方式

文中提到的数据格式:

 常见的媒体格式类型如下:

  •     text/html : HTML格式
  •     text/plain :纯文本格式      
  •     text/xml :  XML格式
  •     image/gif :gif图片格式    
  •     image/jpeg :jpg图片格式 
  •     image/png:png图片格式

   以application开头的媒体格式类型:

  •    application/xhtml+xml :XHTML格式
  •    application/xml     : XML数据格式
  •    application/atom+xml  :Atom XML聚合格式    
  •    application/json    : JSON数据格式
  •    application/pdf       :pdf格式  
  •    application/msword  : Word文档格式
  •    application/octet-stream : 二进制流数据(如常见的文件下载)
  •    application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

   另外一种常见的媒体格式是上传文件之时使用的:

  •     multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

     以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值