Android – 在应用客户端管理服务器端点时遇到问题

我有以下服务器网址:

server-base-url/method1
server-base-url/method2
server-base-url/method3


server-base-url/method100

我目前正在使用属性文件来存储URL.当我需要使用一些服务器URL时,我会阅读属性文件并使用Spring 4 Android执行http请求

我知道这应该是另一种方式(并且更好的方式)来做到这一点.实现这一目标的最佳做法是什么?

解决方法:

另一种选择是使用Plain Java:

public class ServerInfo {
     private static final String URL_BASE_DEBUG = "your base debug url";
     private static final String URL_BASE_RELEASE = "your base release url";

     public static String getBaseUrl() {
          //change if debug' release or whichever flavor
          return URL_BASE_DEBUG;
     } 
}

它非常简单……您可以在单个Java类中获得所需的所有信息

现在关于网络通信它真的取决于你…有很多选择…我个人喜欢Retrofit 2这是一个网络库okhttp顶部的包装器

如何使用上述方法使用Retrofit的简短示例如下:

休息Api(如User Rest api)

public interface SomeRestApiEndPoints {
    @GET("api/method1")
    Call<ReturnValue> method1(params);

    @POST(api/method2)
    Call<ReturnObject> method2(params);
    ...
}

休息客户

public class RestClient {
   private static RestClient sRestClient;

   private Retrofit mRetrofit;
   private SomeRestApiEndPoints apiEndpoint;

   public static RestClient getRestClient () {
        if(sRestClient != null){
            return sRestClient;
        }

        synchronized (RestClient.class) {
            if(sRestClient == null) {
            //gson example
            Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
            RestClient client = new RestClient();
            client.mRetrofit = new Retrofit.Builder()
                    .baseUrl(ServerInfo.getBaseUrl()) //This is where you bind the base Url
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();     

            client.apiEndpoint = client.mRetrofit.create(SomeRestApiEndPoints.class);
            sRestClient = client;
        }
        return sRestClient;
    }


    public SomeRestApiEndPoints getApi() {
        return apiEndpoints;
    }

}

用法示例

Call<ReturnValue> call = RestClient.getRestClient().getApi().method1(params);
上一篇:circus && web comsole docker-compose 独立部署web console 的一个bug


下一篇:通信、端点、IO、文件