Модифицировать путь кодирования, кроме символа? - PullRequest
0 голосов
/ 06 ноября 2018

Я использую модификацию и мой интерфейс ниже

 @GET("{link}")
 fun search(@Path(value = "link", encoded = true) link: String?): Call<Any>

Нужно ли использовать закодированный для всех ссылок, кроме символа '?'.

Пример:

Ссылка -> / api / search? & Query = تست

Закодированная ссылка путем модернизации -> API / поиск% 3F & query =% D8% AA% D8% B3% D8% AA

Мне нужна эта ссылка -> api / search? & Query =% D8% AA% D8% B3% D8% AA

Мне не нужно конвертировать символы '?' в % 3F . делать в любом случае?

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Я нашел решение, должен использовать Interceptor для запроса.

class RemoveCharacterInterceptor : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        val request = chain.request()
        val path = request.url().toString()

        val string = path.replace("%3F", "?") // replace

        val newRequest = request.newBuilder()
                .url(string)
                .build()

        return chain.proceed(newRequest)
    }

}

и добавьте в httpClient

val httpClient = OkHttpClient.Builder()
httpClient.addInterceptor(RemoveCharacterInterceptor())
0 голосов
/ 21 января 2019

@ Url должен использоваться для этого вместо @ Path

@GET
Call<ResponseClass> list(@Url String url);

Отлично работает с полным URL-адресом и путем, который затем используется с базовым URL-адресом.

Retrofit retrofit = Retrofit.Builder()  
  .baseUrl("https://website.com/");
  .build();

MyService service = retrofit.create(MyService.class);  
service.exampleCall("https://another-website.com/example");
service.anotherExampleCall("/only/path/part");
0 голосов
/ 06 ноября 2018

Не используйте путь, вы можете использовать @Query в своем методе, он не будет конвертировать ? в %3F. Вы можете изменить свой метод на

@GET("api/serach")
fun search(@Query("query") value: String?): Call<Any>

Например, ваше значение «aolphn», этот код будет иметь доступ

http(s)://xxx/api/search?query=aolphn

? будет добавлено автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...