C#基于HttpWebRequest实现发送HTTP请求的方法分析
程序员文章站
2023-12-12 08:48:34
本文实例讲述了c#基于httpwebrequest实现发送http请求的方法。分享给大家供大家参考,具体如下:
调用第三方api的时候要用到httpwebrequest类...
本文实例讲述了c#基于httpwebrequest实现发送http请求的方法。分享给大家供大家参考,具体如下:
调用第三方api的时候要用到httpwebrequest类发送http请求,网上查阅一番后大致了解了该类的用法,现记录如下。
首先引入httpwebrequest类,system.io类
using httpwebrequest using system.io
get请求
/// <summary> /// 发送get请求 /// </summary> /// <param name="url">请求url,如果需要传参,在url末尾加上“?+参数名=参数值”即可</param> /// <returns></returns> static string httpget(string url) { //创建 httpwebrequest httpwebrequest = (httpwebrequest)httpwebrequest.create(url); //设置请求方法 httpwebrequest.method = "get"; //请求超时时间 httpwebrequest.timeout = 20000; //发送请求 httpwebresponse httpwebresponse = (httpwebresponse)httpwebrequest.getresponse(); //利用stream流读取返回数据 streamreader streamreader = new streamreader(httpwebresponse.getresponsestream(), encoding.utf8); //获得最终数据,一般是json string responsecontent = streamreader.readtoend(); streamreader.close(); httpwebresponse.close(); return responsecontent; }
post请求
/// <summary> /// 发送post请求 /// </summary> /// <param name="url">请求url</param> /// <param name="data">请求参数</param> /// <returns></returns> static string httppost(string url, string data) { httpwebrequest httpwebrequest = (httpwebrequest)httpwebrequest.create(url); //字符串转换为字节码 byte[] bs = encoding.utf8.getbytes(data); //参数类型,这里是json类型 //还有别的类型如"application/x-www-form-urlencoded",不过我没用过(逃 httpwebrequest.contenttype = "application/json"; //参数数据长度 httpwebrequest.contentlength = bs.length; //设置请求类型 httpwebrequest.method = "post"; //设置超时时间 httpwebrequest.timeout = 20000; //将参数写入请求地址中 httpwebrequest.getrequeststream().write(bs, 0, bs.length); //发送请求 httpwebresponse httpwebresponse = (httpwebresponse)httpwebrequest.getresponse(); //读取返回数据 streamreader streamreader = new streamreader(httpwebresponse.getresponsestream(), encoding.utf8); string responsecontent = streamreader.readtoend(); streamreader.close(); httpwebresponse.close(); httpwebrequest.abort(); return responsecontent; }
get请求就很简单易懂啦,如果需要传参,在url末尾加上“?+参数名=参数值”即可,需要注意的是post请求。
post请求参数类型有多个,设置不正确会发生错误的,一般第三方接口都是以json交换数据,按我上面那样写就没错了。请求中的参数设置涉及到了stream流的一些知识点
httpwebrequest.getrequeststream().write(bs, 0, bs.length);
这一行的意思是将“bs”从request的“0”位置中开始写入,长度为“bs.length”,说白了就是把参数数据加入到请求数据中。
更多关于c#相关内容感兴趣的读者可查看本站专题:《c#程序设计之线程使用技巧总结》、《c#窗体操作技巧汇总》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#数组操作技巧总结》及《c#面向对象程序设计入门教程》
希望本文所述对大家c#程序设计有所帮助。