.Net版的Retrofit网络访问框架(初版)

    这两天在做WPF的Demo时,发现我们客户端的Web访问框架(也不是什么框架,就是个HttpHelper罢了),并不是十分好用,不禁让人想起Android的Retrofit框架,所以就重新封装了下我们的框架,已满足基本的需求,后续功能持续增加中,大家有什么想法也可以在下面评论。

  •  最基本的使用方式

    第一步,创建一个Retrofit对象(一般就创建一个,如果你的客户端访问的服务器是多个的话,那就建多个)

 Retrofit retrofit = new Retrofit.Builder()
                .setUrl("http://localhost:21021")
                .build();

       然后,在你的interface中定义你的WebApi接口,Get请求请使用[Get("xx/xx/xx")]特性,Post请求请使用[Post("xx/xx/xx")]特性,特性中的字符串表示的是你的接口的Url

public interface ILoginService
{
  [POST("/api/TokenAuth/Login")]
  Call Login([Query]string username, [Query] string password);
}

     接下来,通过 第一步创建的Retrofit对象,创建你的接口Service

ILoginService service = retrofit.create<ILoginService>();

     定义你的返回结果,根据你服务器的返回结果来定义,这里我是直接copy的服务器Controller中的返回结果,你可以在WebApi Test方式下,得到返回的json字符串,然后生成返回实体。

public class UserLoginResponseEnt
    {
        /// <summary>
        /// 
        /// </summary>
        public string accessToken { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string encryptedAccessToken { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int expireInSeconds { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int userId { get; set; }
    }

     接下来,直接使用service对象,调用WebApi,返回结果,最基本的使用就完成了。

 Call call = service.Login("admin","123456");
 Respone<UserLoginResponseEnt> rep = call.Execute<UserLoginResponseEnt>();
//rep.IsSuccess 接口是否调用成功
//rep.Msg 接口返回信息
//rep.Code 状态码
//rep.Data WebApi返回结果
  • 为你的请求添加Body

     如果接口请求需要传递实体对象,这时候我们的传参要以body方式进行传递,也很简单。第一步,定义实体

    /// <summary>
    /// 用户登录时的请求实体
    /// </summary>
    public class UserLoginRequestEnt
    {
        /// <summary>
        /// 
        /// </summary>
        public string userNameOrEmailAddress { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string password { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public bool rememberClient { get; set; }


    }

    第二步,接口定义中,请使用[Body]特性,如下所示,其他流程如上所示

public interface ILoginService
{
   [POST("/api/TokenAuth/Login")]
   Call Login( [Body]UserLoginRequestEnt ent);
}
  • 为你的请求添加Header

    添加Header的方式有三种。

    第一种,在创建Retrofit对象时,添加Header,这种方式添加的header,在你请求这个服务器的所有接口时,都会带上你定义的header信息。

Retrofit retrofit = new Retrofit.Builder()
                .AddHeader("testHeader5:thisIsHeader5")
                .setUrl("http://localhost:21021")
                .build();

    第二种方式,在你接口的方法定义上面,添加Header标签,这种方式添加的header,只会在你请求这个接口的时候,带上你定义的接口信息。

 public interface ILoginService{
   [Header("testHeader1: application/javascript")] 
   [POST("/api/TokenAuth/Login")]
   Call Login([Query]string username, [Query] string password);
}

   第三种,动态的header信息。你可以将你的header定义到接口的参数中,实现动态的header添加,此种方式添加的header,也只会在你请求这个接口的时候,带上你定义的接口信息。

 public interface ILoginService{
   [POST("/api/TokenAuth/Login")]
   Call Login([Query]string username, [Query] string password,[DynamicHeader("testHeader4")]string header3);
}

 框架dll下载: https://download.youkuaiyun.com/download/war3ismylove/11317653

 框架源码及Demo下载:https://download.youkuaiyun.com/download/war3ismylove/11317623

 大家有啥想法可以留言给我哦,我会在后面的版本中进行更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值