欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#基于HttpWebRequest实现发送HTTP请求的方法分析

程序员文章站 2023-11-24 16:19:52
本文实例讲述了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#程序设计有所帮助。