使用retrofit时创建接口可以在其中定义多个方法吗

 我来答
周启萌
2016-08-03 · TA获得超过1152个赞
知道大有可为答主
回答量:1441
采纳率:86%
帮助的人:1716万
展开全部
retrofit版本为1.9.0,2.0.0以后版本有不同的写法,但道理是一致的。
先上代码
public class WXRequest {

private static IWX iWX;

private static IWX getIWX(Activity activity) {
if (iWX == null) {
synchronized (UserRequest.class) {
if (iWX == null) {
RestAdapter adapter = getAdapter();
iWX = adapter.create(IWX.class);
}
}
}
return iWX;
}

protected static RestAdapter getAdapter() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.BASIC)
.setEndpoint("https://api.weixin.qq.com/sns/")
.setConverter(new BaseConverter())
.build();
return restAdapter;
}

interface IWX {
@GET("/oauth2/access_token")
void accessToken(@Query("appid") String appid,
@Query("secret") String secret,
@Query("code") String code,
@Query("grant_type") String grant_type,
Callback<String> callback);

@GET("/userinfo")
void userInfo(@Query("access_token") String access_token,
@Query("openid") String openid,
Callback<String> callback);

}

/***
* 发起请求获取Token
*/
public static void accessToken(final Activity activity, String code) {
Callback<String> back = new Callback<String>() {
@Override

public void success(String object, Response response) {
GSBToken gsbToken = Json.getGSBToke(object);
getApplaction(activity).getBus(activity).post(gsbToken);
}

@Override
public void failure(RetrofitError error) {

}
};

IWX iwx = getIWX(activity);
iwx.accessToken(WXConstants.APP_ID, WXConstants.SECRET, code, "authorization_code", back);
}

/***
* 请求得到用户信息
*/
public static void getUserInfo(final Activity activity, String access_token, String openid) {
Callback<String> back = new Callback<String>() {
@Override

public void success(String object, Response response) {
getApplaction(activity).getBus(activity).post(object);
}

@Override
public void failure(RetrofitError error) {

}
};

IWX iwx = getIWX(activity);
iwx.userInfo(access_token, openid, back);
}

private static GSBApplication getApplaction(Activity activity) {
Application application = activity.getApplication();
return (GSBApplication) application;
}
}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788

1、getIWX(Activity activity) 方法是一个单例方法,用来得到接口IWX的实现类
2、getAdapter()方法得到retrofit的RestAdapter类,通过该类可以实现声明的接口,其中BaseConverter类实现了Converter接口声明的两个方法,该类用于定义网络请求的结果类型
3、IWX接口中的两个方法分别用于得到用户的授权access_token值和用户的详细信息,具体的参数含义请参考微信的api文档,方法中注解的具体含义请参考这里
4、accessToken(final Activity activity, String code) 方法是用于外部调用的具体方法,通过配置具体参数调用IWX的accessToken()方法来得到具体的access_token值并执行回调信息。getUserInfo(final Activity activity, String access_token, String openid)同理
5、上面的代码中的Callback回调对微信端返回的Json格式的String值进行了类型转换,将其转换为具体的逻辑对象,并通过otto对接受者发送了该对象,可根据具体逻辑进行修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式