C#通过HTT协议请求网络资源工具类
作者:互联网
针对C#通过POST或者GET请求操作网络常用 方法进行封装成工具类进行调用。
其中包括Post和GET请求,代码如下:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace HttpHelper
{
#region << 版 本 注 释 >>
/*----------------------------------------------------------------
// 文件名:Post方式请求网络资源
// 文件功能描述:用于Post方式请求网络资源的方法操作
// 版本:V1.0.0
//----------------------------------------------------------------*/
#endregion
public class PostHelper
{
/// <summary>
/// Post方式请求
/// </summary>
/// <param name="url">访问请求的地址</param>
/// <param name="postData">请求的参数数据,为json数据</param>
/// <returns></returns>
public static string Post(string url, string postData)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
/// <summary>
/// 带有token方式请求资源
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postData">访问接口的参数值,为json字符串</param>
/// <param name="token">访问接口的token参数值</param>
/// <returns></returns>
public static string PostToken(string url, string postData, string token)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
req.Headers.Add("token", token);
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
/// <summary>
/// post方式请求网络文件资源,返回文件流
/// </summary>
/// <param name="url">post请求的地址</param>
/// <param name="postData">请求参数,为json字符串</param>
/// <returns></returns>
public static Stream PostStream(string url, string postData)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
return stream;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// post方式请求,返回响应参数对象
/// </summary>
/// <typeparam name="T">响应对象</typeparam>
/// <param name="url">请求地址</param>
/// <param name="postData">请求数据,为json字符串</param>
/// <returns></returns>
public static T PostObj<T>(string url, string postData)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
byte[] data = Encoding.UTF8.GetBytes(postData);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
string result = "";
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return JsonConvert.DeserializeObject<T>(result);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
标签:string,C#,req,网络资源,reqStream,HTT,using,data,请求 来源: https://blog.csdn.net/Rain4138/article/details/111666431