Ответ 1
Для модификации 2 я не могу найти подходящий способ сделать это с помощью okhttp. Единственный способ, которым я вижу это сейчас, - это получить HttpUrl из Chain.request(). HttpUrl(); в перехватчике okhttp и самостоятельно манипулируйте этим, но я не знаю, является ли это лучшим способом идти.
Моя реализация с использованием okhttp: 3.2
class PathParamInterceptor implements Interceptor {
private final String mKey;
private final String mValue;
private PathParamInterceptor(String key, String value) {
mKey = String.format("{%s}", key);
mValue = value;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
HttpUrl.Builder urlBuilder = originalRequest.url().newBuilder();
List<String> segments = originalRequest.url().pathSegments();
for (int i = 0; i < segments.size(); i++) {
if (mKey.equalsIgnoreCase(segments.get(i))) {
urlBuilder.setPathSegment(i, mValue);
}
}
Request request = originalRequest.newBuilder()
.url(urlBuilder.build())
.build();
return chain.proceed(request);
}
}