C# Http请求Api方法。

 

string jwttoken="Api验证权限需要的秘钥";

/// <summary>
/// get请求
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
/// <returns></returns>
public string GetHttpResponse(string url, int timeout = 60000)
{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
request.UserAgent = null;
request.Timeout = timeout;

//往头部加入自定义验证信息
SetHeaderValue(request.Headers, "Authorization", jwttoken);
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;

 

}

/// <summary>
/// post方法
/// </summary>
/// <param name="url">地址</param>
/// <param name="postString">post数据的字符串</param>
/// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
/// <returns></returns>
public string PostHttpResponse(string url, IDictionary<string, string> parameters, int timeout = 60000)
{
HttpWebRequest request = null;
//HTTPSQ请求
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.Timeout = timeout;

//往头部加入自定义验证信息

SetHeaderValue(request.Headers, "Authorization", jwttoken);

//如果需要POST数据
if (!(parameters == null || parameters.Count == 0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
}
i++;
}
byte[] data = Encoding.GetEncoding("utf-8").GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
var resultStream = (request.GetResponse() as HttpWebResponse);
string result = "";
//获取响应内容
using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}


/// <summary>
/// post方法(使用该方法请求Api时,Api中参数前需要加[FromBody])
/// </summary>
/// <param name="url">地址</param>
/// <param name="PostData">post数据对象</param>
/// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
/// <returns></returns>
public string PostHttpResponse(string url, Object PostData, int timeout = 60000)
{
HttpWebRequest request = null;
//HTTPSQ请求
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
request.ContentType = "application/json";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.Timeout = timeout;

 

//往头部加入自定义验证信息

SetHeaderValue(request.Headers, "Authorization", jwttoken);

//如果需要POST数据
string str = JsonConvert.SerializeObject(PostData);
byte[] data = Encoding.GetEncoding("utf-8").GetBytes(str);
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}

var resultStream = (request.GetResponse() as HttpWebResponse);
string result = "";
//获取响应内容
using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}

 

/// <summary>
/// 往头部加信息
/// </summary>
/// <param name="header"></param>
/// <param name="name"></param>
/// <param name="value"></param>
public static void SetHeaderValue(WebHeaderCollection header, string name, string value)
{
var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
if (property != null)
{
var collection = property.GetValue(header, null) as NameValueCollection;
collection[name] = value;
}

}

转载于:https://www.cnblogs.com/yjh580/p/10399732.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值