tnblog
首页
视频
资源
登录

封装调用api接口的通用方法(抱含存调用接口日志)

4108人阅读 2019/8/27 13:25 总访问:15724 评论:0 收藏:0 手机
分类: webAPI
  1.       protected static readonly log4net.ILog _log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  2.         /// <summary>
  3.         /// get请求
  4.         /// </summary>
  5.         /// <typeparam name="T"></typeparam>
  6.         /// <param name="uri"></param>
  7.         /// <param name="content_type"></param>
  8.         /// <returns></returns>
  9.         public static T Get<T>(string uri, string content_type = "application/json; charset=utf-8")
  10.         {
  11.             WebClient wc = new WebClient();
  12.             //没有链接凭证
  13.             wc.Credentials = CredentialCache.DefaultCredentials;
  14.             //有连接凭证(没有连接凭证的可以不加)
  15.             wc.Credentials = new NetworkCredential("用户名""密码""域");
  16.             wc.Headers.Add(HttpRequestHeader.ContentType, content_type);
  17.  
  18.             try
  19.             {
  20.                 byte[] text = wc.DownloadData(uri);
  21.                 string str = System.Text.Encoding.UTF8.GetString(text);
  22.                 _log.Info(" visit url:" + uri);
  23.                 return JsonConvert.DeserializeObject<T>(str);
  24.             }
  25.             catch (Exception ex)
  26.             {
  27.                 _log.Error(string.Format(" uri:{0}访问异常  ", uri), ex);
  28.                 throw ex;
  29.             }
  30.         }
  31.  
  32.         /// <summary>
  33.         /// post请求
  34.         /// </summary>
  35.         /// <typeparam name="T">返回的对象</typeparam>
  36.         /// <param name="model">请求的对象</param>
  37.         /// <param name="uri">接口地址</param>
  38.         /// <param name="token">token没有可以去掉</param>
  39.         /// <param name="content_type"></param>
  40.         /// <returns></returns>
  41.         public static T Post<T>(object model, string uri, string token = ""string content_type = "application/json; charset=utf-8")
  42.         {
  43.             WebClient wc = new WebClient();  
  44.             wc.Headers.Add(HttpRequestHeader.ContentType, content_type);
  45.             //没有链接凭证
  46.             wc.Credentials = CredentialCache.DefaultCredentials;
  47.             //有连接凭证(没有连接凭证的可以不加)
  48.             wc.Credentials = new NetworkCredential("用户名""密码""域");
  49.             wc.Headers.Add("token", token);
  50.             byte[] postData = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(model));
  51.             //var content=new FormUrlEncodedContent() .netframwork 4.5
  52.             try
  53.             {
  54.                 byte[] text = wc.UploadData(uri, "post", postData);
  55.                 string str = System.Text.Encoding.UTF8.GetString(text);
  56.                 _log.Info("request:" + JsonConvert.SerializeObject(model) + " visit url:" + uri + " token:" + token);
  57.                 return JsonConvert.DeserializeObject<T>(str);
  58.             }
  59.             catch (Exception ex)
  60.             {
  61.                 _log.Error(string.Format("request:{1} token:{2} uri:{0}访问异常  ", uri, JsonConvert.SerializeObject(model), token), ex);
  62.                 throw ex;
  63.             }
  64.         }
  65.  
  66.         /// <summary>
  67.         /// post请求--传如凭证的方发
  68.         /// </summary>
  69.         /// <typeparam name="T"></typeparam>
  70.         /// <param name="model"></param>
  71.         /// <param name="uri"></param>
  72.         /// <param name="credential"></param>
  73.         /// <param name="content_type"></param>
  74.         /// <returns></returns>
  75.         public static T PostWindowsAuth<T>(object model, string uri, NetworkCredential credential, string content_type = "application/json; charset=utf-8")
  76.         {
  77.             WebClient wc = new WebClient();
  78.             wc.Credentials = credential;
  79.             wc.Headers.Add(HttpRequestHeader.ContentType, content_type);
  80.             byte[] postData = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(model));
  81.             //var content=new FormUrlEncodedContent() .netframwork 4.5
  82.             try
  83.             {
  84.                 byte[] text = wc.UploadData(uri, "post", postData);
  85.                 string str = System.Text.Encoding.UTF8.GetString(text);
  86.                 _log.Info("request:{1}" + JsonConvert.SerializeObject(model) + " visit url:" + uri);
  87.                 return JsonConvert.DeserializeObject<T>(str);
  88.             }
  89.             catch (Exception ex)
  90.             {
  91.                 _log.Error(string.Format("request:{1}  uri:{0}访问异常  ", uri, JsonConvert.SerializeObject(model)), ex);
  92.                 throw ex;
  93.             }
  94.         }


评价

为什么要使用webapi而不直接使用controller

彼年豆蔻,谁许谁地老天荒。webapi能做的事情,controller都能做,为什么要使用webapi而不直接使用controller呢?这就好比...

Webapi转json格式

创建WebApi项目时出现的xml格式,每次都去转换比较麻烦在Global设置全局输出json格式://直接xml干掉为json GlobalConfigu...

控制台应用程序托管webapi

在没有iis的情况下,webapi是可以自托管的so,我们从写一个webapi程序开始:1、创建一个控制台应用程序,然后在控制台应用...

在WEB api中进行统一安全验证类DelegatingHandler

根据web api 官方参考文献 总结出一下代码举例:将 HTTP 响应消息的处理委托给另一处理程序(称为“内部处理程序”)的 HTT...

.net core上传图片,文件。webapi 上传图片文件

上传图片的前台代码都完全一样,直接来贴后台的代码吧publicActionResultUploadImage(List&lt;IFormFile&gt;upfile) { ...

使用swagger创建webapi文档描述---详解

在前后端分离开发中,作为后端如何给前端提供有效直观的接口文档呢?没错,就是使用swagger 俗称“丝袜哥”教程:一、首先...

通过PlUpload控件配合Webapi接口完成压缩上传文件

最近一段时间都在使用PlUpload做文件上传的功能,研究过后感觉使用起来体验还是比较好的,不过网上的资料很多都记录的很简...

Webapi传递大数据

在接口中传输图片进制流或BASE64字符串时,使用FormUrlEncodedContent处理参数时,可能会因为参数太长导致异常无效的URL:U...

AJAX调用webapi上传图片或文件。设置token,设置Authorization Bearer

AJAX调用webapi上传图片或文件,并返回刚上传的文件名。废话不多说直接贴代码吧html相关:&lt;!DOCTYPEhtml&gt; &lt;html&...

webapi与rpc区别

首先说rpc,rpc的定义是远程过程调用,通俗讲就是客户端通过网络远程调用服务端的方法,比如一个用java写的method。rpc是基...

.NET HttpClient和webapi相关的东东先记录一点。传递Authorization headertoken

get请求传递Authorization header,tokenstringurl=&quot;你请求的url&quot;; stringtoken=&quot;yourtoken&quot;; Http...

WEBapi报错:Attribute routes with the same name 'Get' must have the same template

是因为 asp.net core 中默认创建的 api controller 中的 Get(id) Action的属性都是[HttpGet(&quot;{id}&quot;, Name = &quo...

net core webapi版本控制

webapi的版本控制好处很多,要实现其实也比较简单。在webapi中根据不同的版本创建文件夹。然后在不同的api里边添加不同的路...

net core webapi路由

如下我们可以通过路由传递两个参数请求地址参考如下: https://localhost:5001/api/home/aojiancc2/2622最后两个可以作为参...

.net webapi Newtonsoft.Json返回需要的字段,忽略某些字段,修改字段名,动态返回需要的字段等

有时候我们在写webapi的时候,不想把正常用的对象所有字段都返回,我们需要进行一些筛选,忽略某些字段,大概说一下几种方法...
没有个性,不需要签名
排名
72
文章
8
粉丝
3
评论
3
导出SQL脚本小程序
剑轩 : 厉害了!
导出SQL脚本小程序
剑轩 : 厉害了!
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
你只见树,未见森林