仅在RoboSpice

时间:2015-04-23 01:42:55

标签: android ssl retrofit okhttp robospice

我在一个shell Android应用程序中使用Robospice和Retrofit进行基本设置,进行REST调用,将JSON响应解析为POJO,然后我可以使用它在Activity中进行渲染。我现在只想将TLS用于传输安全性(而不是SSL)。我已经读过用OkHttp进行Retrofit可以用来实现这个目的,但我不知道在我的代码中将更新放到哪里。

我有一个基本界面:

public interface RandomAPI {
    @GET("/users")
    List<User> getUsers(@Path("owner") String owner, @Path("repo") String repo);

    @GET("/users/{userid}")
    User getUser(@Path("userid") int userID);
}

我有服务:

public class RandomService extends RetrofitGsonSpiceService {

private final static String BASE_URL = "http://jsonplaceholder.typicode.com";

@Override
public void onCreate() {
    super.onCreate();
    addRetrofitInterface(RandomAPI.class);
}

@Override
protected String getServerUrl() {
    return BASE_URL;
}
}

最后是一个请求:

public class RandomRequest extends RetrofitSpiceRequest<User, RandomAPI> {

private int userID;

public RandomRequest(int userID) {
    super(User.class, RandomAPI.class);
    this.userID = userID;
}

@Override
public User loadDataFromNetwork() throws Exception {
    return getService().getUser(userID);
}

}

我猜我需要更新服务,但不确定如何。我非常喜欢这种模式的简单性,所以如果可能的话,我希望保留它。我可以将OkHttp jar放入应用程序,但我不知道如何获得服务的实际实现,或者如何添加我的自定义服务以便所有请求都使用它。

有没有人有过这方面的经验,可以分享一些代码片段或者给我一个例子?

~~编辑~~

查看Robospice的API,看起来我的请求可以只扩展SpiceRequest,然后在loadFromNetwork()方法中我只做简单的Retrofit和OkHTTP的东西。这是唯一的方法吗?我们认为有一种方法可以在RetrofitSpiceService中设置您自己的RestAdapter实现,而不是仅使用默认值。

1 个答案:

答案 0 :(得分:0)

所以要做到这一点其实很简单。创建一个扩展RetrofitGsonSpiceService并覆盖createRestAdapterBuilder()方法的类。

e.g。

@Override
protected Builder createRestAdapterBuilder() {
    RestAdapter.Builder builder = new RestAdapter.Builder()
        .setEndpoint(SERVICE_URL)
        .setRequestInterceptor(requestInterceptor);
    return builder; 
}