博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】C#模拟http 发送post或get请求
阅读量:4659 次
发布时间:2019-06-09

本文共 3248 字,大约阅读时间需要 10 分钟。

原文地址:http://www.cnblogs.com/xssxss/archive/2012/07/03/2574554.html

 

模拟POST Json

public static string PostMoths(string url, string param)    {        string strURL = url;        System.Net.HttpWebRequest request;        request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);        request.Method = "POST";        request.ContentType = "application/json;charset=UTF-8";        string paraUrlCoded = param;        byte[] payload;        payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);        request.ContentLength = payload.Length;        Stream writer = request.GetRequestStream();        writer.Write(payload, 0, payload.Length);        writer.Close();        System.Net.HttpWebResponse response;        response = (System.Net.HttpWebResponse)request.GetResponse();        System.IO.Stream s;        s = response.GetResponseStream();        string StrDate = "";        string strValue = "";        StreamReader Reader = new StreamReader(s, Encoding.UTF8);        while ((StrDate = Reader.ReadLine()) != null)        {            strValue += StrDate + "\r\n";        }        return strValue;    }

 

 

private string HttpPost(string Url, string postDataStr)        {            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);            request.Method = "POST";            request.ContentType = "application/x-www-form-urlencoded";            request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);            request.CookieContainer = cookie;            Stream myRequestStream = request.GetRequestStream();            StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));            myStreamWriter.Write(postDataStr);            myStreamWriter.Close();             HttpWebResponse response = (HttpWebResponse)request.GetResponse();             response.Cookies = cookie.GetCookies(response.ResponseUri);            Stream myResponseStream = response.GetResponseStream();            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));            string retString = myStreamReader.ReadToEnd();            myStreamReader.Close();            myResponseStream.Close();             return retString;        }         public string HttpGet(string Url, string postDataStr)        {            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);            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;        }

在post的时候有时也用的到cookie,像登录163发邮件时候就需要发送cookie,所以在外部一个cookie属性随时保存 CookieContainer cookie = new CookieContainer();

!注意:有时候请求会重定向,但我们就需要从重定向url获取东西,像QQ登录成功后获取sid,但上面的会自动根据重定向地址跳转。我们可以用:

request.AllowAutoRedirect = false;设置重定向禁用,你就可以从headers的Location属性中获取重定向地址

转载于:https://www.cnblogs.com/eedc/p/9168510.html

你可能感兴趣的文章
[2017.02.23] Java8 函数式编程
查看>>
sprintf 和strcpy 的差别
查看>>
JS中window.event事件使用详解
查看>>
ES6深入学习记录(一)class方法相关
查看>>
C语言对mysql数据库的操作
查看>>
INNO SETUP 获得命令行参数
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>