【问题标题】:How to add dynamic query parameters in Retrofit2 OkHttpClient Interceptor?如何在 Retrofit2 OkHttpClient 拦截器中添加动态查询参数?
【发布时间】:2016-06-28 21:56:54
【问题描述】:

我正在使用 Retrofit2 连接到基于 REST 的 API。问题是它需要 lat/lng 位置,但仅适用于大约 50% 的端点。我想知道如何根据一些布尔值将查询参数动态添加到 OkHttpClient 中。我现在的代码:

public static APIEndpointInterface getHttpClient(Boolean addLatLng){
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {

                        LatLng location = App.getLocationRepository().getCurrentLocation();
                        String lat = String.valueOf(location.latitude);
                        String lng = String.valueOf(location.longitude);

                        Request request = chain.request();
                        HttpUrl url = request.url().newBuilder()
                                .addQueryParameter("version", API_VERSION)
                                .addQueryParameter("app_version_code", String.valueOf(BuildConfig.VERSION_CODE))
                                //ADD ONLY IF BOOLEAN PASSED TO METHOD IS TRUE
                                .addQueryParameter("lat", lat)
                                .addQueryParameter("lng", lng)
                                .port(PORT_HTTPS)
                                .build();
                        ......

除了将 lat/lng 添加到每隔一个接口方法之外,还有其他选择吗?

【问题讨论】:

    标签: android retrofit2 okhttp3


    【解决方案1】:

    我自己刚刚找到了解决方案。如果对任何人有帮助:

    Request request = chain.request();
    HttpUrl.Builder builder = request.url().newBuilder();
    builder.addQueryParameter("version", API_VERSION);
    builder.addQueryParameter("app_version_code",String.valueOf(BuildConfig.VERSION_CODE));
    if (location) {
        builder.addQueryParameter("lat", lat);
        builder.addQueryParameter("lng", lng);
    }
    HttpUrl url = builder.build();
    request = request.newBuilder()
             .addHeader("Accept", "application/json")
             .url(url)
             .build();
    

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 2021-08-19
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多