.NET接入接口/请求服务器
之前只调用过自己写的接口,这个是调用外部接口
一.创建方法链接接口
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:小菜一只请多多指教
.NET接入接口/请求服务器的更多相关文章
- zzy:请求静态资源和请求动态资源, src再次请求服务器资源
[总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...
- IOS 请求服务器的方式
IOS 中请求服务器的方式主要有Get 和Post . Get :[1]向服务器发索取数据的一种请求; [2]获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改;请求的参数会跟在url后 ...
- HttpClient请求服务器代码优化版
HttpClient请求服务器代码优化版 首先,我在前面的两篇博文中介绍了在 Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换 ...
- Android使用HttpUrlConnection请求服务器发送数据详解
HttpUrlConnection是java内置的api,在java.net包下,那么,它请求网络同样也有get请求和post请求两种方式.最常用的Http请求无非是get和post,get请求可以获 ...
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
讲这个之前,我们先来说说get和post两种请求的区别吧!!! 1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.jsp?name=te ...
- extjs Tree中避免连续单击会连续请求服务器
应用场景:在项目中我要做一个左边是tree,右边是panel的界面.当我单击tree中的一条记录时,发送请求,并将结果显示在右边的panel中.做完之后发现,如果连续单击就会连续请求两次服务器,毕竟用 ...
- Ajax在jQuery中的应用(加载异步数据、请求服务器数据)
加载异步数据 jQuery中的load()方法 load(url,[data],[callback]) url:被加载的页面地址 [data]:可选项表示发送到服务器的数据,其格式为 key/valu ...
- C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误
FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...
- python请求服务器时如何隐藏User-Agent
本文结合上一篇文章“python利用有道翻译实现“语言翻译器”的功能”的实现代码,对其进行加工,实现请求服务器时隐藏User-Agent. python实现隐藏User-Agent的一般做法有两种: ...
随机推荐
- 201521123088《JAVA程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出 ...
- 201521123016 《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 2.1代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 201521123115《java程序设计》第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1. ...
- eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明
context-param.listener.filter.servlet 首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...
- java 程序编写规则(自己总结)
1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z).数字(0-9)和下划线"_". (2)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写.例如:Us ...
- 如何选择适合的前端UI框架
根据近几年前端框架的热门,在前端开发框架不断更新与交换的时代,每一年都有黑马出现,是否适合自己开发的项目就不得而知了,只有认真的了解之后才能知道,这里主要给大家说一下如何选择适合旅游的前端UI框架?相 ...
- quartz定时格式配置以及JS验证
一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下: ---------------------------------------------- ...
- 由一次自建库迁移到阿里云RDS引发的性能问题。
刚入职一互联网公司,项目正好处于计划上线的时间,由于公司前不久已经购买了rds服务,领导决定尝试一番! 当然,新事物.云事物还是要谨慎的.安排我先把测试环境数据库迁移上去,这里吐槽一下,往rds迁移一 ...
- 回文词_KEY
回文词 (palin.pas/c/cpp) [问题描述] 回文词是一种对称的字符串--也就是说,一个回文词,从左到右读和从右到左读得的结果是一样的.任意给定一个字符串,通过插入若干字符,都可以变成一个 ...
- 彻底弄懂AngularJS中的transclusion
点击查看AngularJS系列目录 彻底弄懂AngularJS中的transclusion AngularJS中指令的重要性是不言而喻的,指令让我们可以创建自己的HTML标记,它将自定义元素变成了一个 ...