• HttpWebRequest的使用之Get和Post的差别(C#)


            这两天做的是通过一个HttpWebRequest将采集地址发送到服务端,服务端会返回一个JSON格式的字符串,然后我这边再对这个JSON进行反序列化,得到我想要的数据。在这篇文章里我简单介绍一下HttpWebRequest中“Get”和“Post”的差别。

    两种方式的区别:

            Get使用的是“域名?keys=values1,values2...”在?后附加参数的形式进行传参,而Post使用的是将?后的参数写一个string字符串,再将字符串转换为byte[],然后使用域创建一个HttpWebReques对象,在用这个对象创建一个用于写入请求的对象,最后通过写入参数的方式传参。因为两种方式传参的方式的不同所以两者最大的区别在于get传参有长度限制,而post传参在服务端允许的情况可以无限长(大部分有长度限制)。

            HttpWebRequest类主要利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两种方式来对数据进行获取和提交。下面对这两种方式进行一下说明:

    GET 方式:
    GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://blog.csdn.net/finish_dream/article/details/47216969?hh=521中,前面部分http://blog.csdn.net/finish_dream/article/details/47216969t表示数据提交的网址,后面部分hh=521 表示附加的参数,其中hh 表示一个键(key),521表示这个键对应的值(value)。

    HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://blog.csdn.net/finish_dream/article/details/47216969?hh=521" );
    
    req.Method = "GET";
    
    using (WebResponse wr = req.GetResponse())
    
    {
    
    //在这里对接收到的页面内容进行处理
    
    }

    POST方式:

    POST方式通过写入参数的方式传参.

    string param = "hh=521";
    
    byte[] bs = Encoding.ASCII.GetBytes(param);
    
    HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://blog.csdn.net/finish_dream/article/details/47216969" );
    
    req.Method = "POST";
    
    req.ContentType = "application/x-www-form-urlencoded";
    
    req.ContentLength = bs.Length;
    
    using (Stream reqStream = req.GetRequestStream())
    
    {
    
       reqStream.Write(bs, 0, bs.Length);
    
    }
    
    using (WebResponse wr = req.GetResponse())
    
    {
    
       //在这里对接收到的页面内容进行处理
    
    }
    无论传输方式是Get还是Post只要传输的参数中有中文,只需要对中文进行编码,然后正常组成string类型字符串即可;

    注意:

    1.Get方式有"?",而Post方式没有。

    2.Get方式可以不设置req.ContentType或者设置成

    req.ContentType = "application/json";
    而Post方式需要设置成

    req.ContentType = "application/x-www-form-urlencoded";
    否则会报错400

  • 相关阅读:
    文章目录
    平滑的加权轮询
    ESG
    JDK
    集合
    数组
    多线程(下)
    多线程
    Java常用类
    jdk5.0新增线程创建方式
  • 原文地址:https://www.cnblogs.com/haxianhe/p/9271249.html
Copyright © 2020-2023  润新知