Заголовок авторизации WMS для mapBox Android SDK

Как добавить заголовок авторизации при вызове сервисов WMS в mapBox Android SDK.

у нас есть поставщик услуг спутниковых изображений под названием Airbus. мы хотим сделать вызов их WMS restful API с помощью mapBox Android SDK. проблема в том, что Airbus требует, чтобы мы передавали заголовок авторизации с ключом (токеном) при вызове сезонов безопасности. а в mapBox SDK вы можете передать источник URL-адреса только в виде строки, а не заголовка.

пожалуйста, мы не можем совершать звонки к другим службам WMS, которые не требуют заголовка авторизации.

КОД

String airBus_source = "https://view.geoapi-airbusds.com/api/v1/map/imagery.wms?version=1.1.1&request=GetMap&service=WMS&WIDTH=256&HEIGHT=256&FORMAT=image/png&EPSG:3857&bbox={bbox-epsg-3857}";
            setHeader.builder.addHeader("Authorization",Airbus_key);
            setHeader.builder.url(airBus_source);
            setHeader.builder.tag(airBus_source.toLowerCase(MapboxConstants.MAPBOX_LOCALE));

            RasterSource airbus_image = new RasterSource("web-map-source",new TileSet("tileset",airBus_source),256);
            mapboxMap.addSource(airbus_image);

            RasterLayer webMapLayer = new RasterLayer("web-map-layer", "web-map-source");
            mapboxMap.addLayerBelow(webMapLayer, "aeroway-taxiway"); 

person sizwe nduduzow    schedule 30.01.2019    source источник


Ответы (1)


Я думаю, что нашел способ сделать это, заменив OkHttpClient. Библиотека Mapbox позволяет это с com.mapbox.mapboxsdk.module.http.HttpRequestUtil.

OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .addNetworkInterceptor(chain -> {
        // check the request path if you need
        Request newRequest = chain.request()
            .newBuilder()
            .addHeader("Authorization", Airbus_key)
            .build();
        return chain.proceed(newRequest);
    })
    .build();
HttpRequestUtil.setOkHttpClient(okHttpClient);
person Sergey Glotov    schedule 09.10.2020