C#发起http的GETPOST请求并处理响应,及其函数封装HTTP请求需要引⼊的命名空间
using System.Net;
1、先整个窗体
我会先些⼀个命令⾏程序分别实现GET请求和POST请求,这是最终的窗体程序。
如下:
url输⼊框⽤来获取要发起的http请求的地址
GET/POST 单选框⽤来选择发起的http请求的⽅式
选择post⽅式的时候,需要在输⼊⽂本框输⼊内容
点击连接按钮发起请求
发起请求后获得的响应会显⽰到响应⽂本框
2、设置⼀下服务器
⽤nodejs实现的服务器逻辑,⽤PHP更⽅便。
var _http = require('http');
var _query = require('querystring');
var server = _ateServer(function (req, res) {
res.writeHead(200, {"Content-Type": 'text/html;charset=utf-8'}); let obj;
/
/如果请求⽅式是POST
hod == "POST"){
var buff = '';
//监控响应内容
writeline函数('data', (data) => {
buff += data;
});
<('end', () => {
obj = _query.parse(buff);
var a = 'POST ⽅式的请求,请求内容:'+JSON.stringify(obj);
//把 a 作为响应的数据返回给请求⽅。
});
}
hod == "GET"){
//把url⾥的query字符串(a=abc&b=bbb)解析成对象obj
obj = _query.parse(req.url);
var a = 'GET ⽅式的请求,请求内容:'+JSON.stringify(obj);
//把 a作为响应的数据返回给请求⽅。
}
//把 a 显⽰到命令⾏
console.log(a);
});
//服务器端⼝设置为3001
server.listen(3001, function () {
console.log('服务器创建成功!port:3001');
});
3、实现http GET请求
//预备请求的资源
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
string content = string.Empty;
try
{
//实例化⼀个http请求
request = (HttpWebRequest)WebRequest.Create(url);
//设置请求头请求⽅式method=get
request.Method = "GET";
//使request。getResponse()返回的⼀个响应对象
response = (HttpWebResponse)request.GetResponse();
//reader 读取响应流
using (reader = new StreamReader(response.GetResponseStream()))
{
//意思是从头读到尾,全部读完
content = reader.ReadToEnd();
}
}
catch (System.Exception err)
{
Console.WriteLine("1.GET出现了错误!\n错误来源:" + err.Source + "错误信息:" + err.Message); }
Console.WriteLine("响应:" + content);
//为啥read⼤家都懂
Console.Read();
看⼀下效果:
输出符合预期,显然代码是可⾏。
4、接下来实现的是post请求
//要发送的数据
string msg = "method is post.";
//预备请求的资源
HttpWebRequest request = null;
HttpWebResponse response = null;
//post请求需要⼀个流把数据写进去
Stream requestStream = null;
StreamReader reader = null;
//request所携带的数据是字节码,所以msg需要转化为byte[]数组才能读⼊
var data = Encoding.UTF8.GetBytes(string.Format("a={0}&b={1}", "message", msg));
string content = string.Empty;
try
{
//实例化⼀个http请求
request = (HttpWebRequest)WebRequest.Create(url);
/
/设置请求头请求⽅式method=post
request.Method = "POST";
//请求类型
request.ContentType = "application/text";
requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
response = (HttpWebResponse)request.GetResponse();
//reader 读取响应流
using (reader = new StreamReader(response.GetResponseStream()))
{
content = reader.ReadToEnd();
}
}
catch (System.Exception err)
{
Console.WriteLine("1.POST出现了错误!\n错误来源:" + err.Source + "错误信息:" + err.Message); }
Console.WriteLine("响应:" + content);
Console.Read();
输出:
5、封装成函数
封装的函数已经可以直接使⽤了。
⾸先是GET请求:
/// GET⽅式发送得结果
/// </summary>
/// <param name="url">请求的url</param>
/// <returns>服务器响应的数据</returns>
public static string getHttpRequest(string url)
{
//预备请求的资源
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
string content = string.Empty;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
response = (HttpWebResponse)request.GetResponse();
using (reader = new StreamReader(response.GetResponseStream()))
{
content = reader.ReadToEnd();
}
}
catch (System.Exception err)
{
MessageBox.Show("1.GET出现了错误!\n错误来源:" + err.Source + "\n错误信息:" + err.Message+"\n"+err);                Console.WriteLine("1.GET出现了错误!\n错误来源:" + err.Source + "错误信息:" + err.Message);
}
//⽤完销毁
response.Dispose();
reader.Dispose();
return content;
}
然后是POST⽅式:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。