之前只调用过自己写的接口,这个是调用外部接口
一.创建方法链接接口
public static string HttpWebRequest(string url, string data, Encoding encode, string contentType = "application/x-www-form-urlencoded", CookieContainer cookieContainer = null, string UserAgent = null, WebProxy proxy = null, int timeOut = , string method = "Get", string token = null)
{
if (string.IsNullOrEmpty(url)) { return string.Empty; }
string result = string.Empty;
System.Net.HttpWebRequest webRequest = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;//创建HttpWebRequest
try
{
webRequest.Method = method;//传输方式Get/Post
webRequest.Timeout = timeOut;/获取或设置 GetResponse 和 GetRequestStream 方法的超时值(以毫秒为单位)。
webRequest.ContentType = contentType;//内容类型
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";//获取或设置 Accept HTTP 标头的值。
webRequest.KeepAlive = true;
webRequest.UserAgent = UserAgent; //******************
//添加头,一般用于接口方验证
webRequest.Headers.Add("UserName", "TingZi Unique");
//****************** webRequest.ContentLength = ; //内容长度
if (!string.IsNullOrWhiteSpace(token))
webRequest.Headers.Add("X-Api-Auth", token);
if (proxy != null)
webRequest.Proxy = proxy;
if (cookieContainer != null)
{
webRequest.CookieContainer = cookieContainer;
}
if (!string.IsNullOrEmpty(data))
{
byte[] buffer = encode.GetBytes(data); // 转化
webRequest.ContentLength = buffer.Length;
//写入提交数据
using (System.IO.Stream newStream = webRequest.GetRequestStream())
{
newStream.Write(buffer, , buffer.Length); //写入参数
newStream.Flush();
}
} //提交请求
using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)webRequest.GetResponse())
{
if (cookieContainer != null)
{
response.Cookies = cookieContainer.GetCookies(response.ResponseUri);
}
//判断是否返回的是压缩信息
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader sreader = new StreamReader(stream))
{
result = sreader.ReadToEnd();
}
}
}
else
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, encode))
{
result = reader.ReadToEnd();
}
}
}
}
}
catch (WebException ex)
{
//这样可以看见返回的错误详细,如果上传项目别这样写直接输出错误就行
LogHelper.WriteErrorLog(ex);
var httpErrResponse = ((HttpWebResponse)ex.Response);
using (var stream = httpErrResponse.GetResponseStream())
{
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
return HttpUtility.HtmlDecode(result);//返回调用接口返回值
}
PS:HttpWebReq类详细:https://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest(v=vs.110).aspx
二.调用方法
public string GetUserBalance(MemberInfo model)//这个参数需要什么就可以传什么
{
LogHelper.WriteLog(string.Format("TingZi_Unique:{0}", DateTime.Now));//写日志
string PostUrl = "接口地址";
string JsonStr = "{\"username\":\"" + model.UserName + "\"}";//JSON类型参数,参数写这里
string retData = string.Empty;
retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//调用方法
//现在获取到了retData想判断什么判断什么
return "你想返回什么就返回什么!";
}
PS:小菜一只请多多指教