Com o Retrofit 2, você pode definir um URL completo na anotação de um método de serviço como:
public interface APIService {
@GET("http://api.mysite.com/user/list")
Call<Users> getUsers();
}
No entanto, no meu aplicativo, o URL dos meus serviços da web não é conhecido no momento da compilação, o aplicativo os recupera em um arquivo baixado, por isso estou pensando em como posso usar o Retrofit 2 com URL dinâmico completo.
Eu tentei definir um caminho completo como:
public interface APIService {
@GET("{fullUrl}")
Call<Users> getUsers(@Path("fullUrl") fullUrl);
}
new Retrofit.Builder()
.baseUrl("http://api.mysite.com/")
.build()
.create(APIService.class)
.getUsers("http://api.mysite.com/user/list"); // this url should be dynamic
.execute();
Mas aqui, o Retrofit não vê que o caminho é realmente um URL completo e está tentando fazer o download http://api.mysite.com/http%3A%2F%2Fapi.mysite.com%2Fuser%2Flist
Alguma dica de como eu poderia usar o Retrofit com um URL tão dinâmico?
Obrigado
Respostas:
Eu acho que você está usando isso de maneira errada. Aqui está um trecho do changelog :
Portanto, sua interface deve ser assim:
fonte
Queria substituir apenas uma parte do URL e, com esta solução, não preciso passar o URL inteiro, apenas a parte dinâmica:
fonte
Você pode usar o sinalizador codificado na
@Path
anotação:/
por%2F
.?
seja substituído por%3F
isso, portanto você ainda não pode passar as seqüências de consulta dinâmicas.fonte
No Retrofit 2.0.0-beta2, se você tiver um serviço respondendo ao JSON a partir desta URL: http: // myhost / mypath
O seguinte não está funcionando:
Mas está tudo bem:
fonte
Você pode usar isto:
Para mais informações, consulte a documentação https://square.github.io/retrofit/
fonte
Passo 1
Etapa 2 Para obter uma prática recomendada, defina uma classe para instância de modernização: -
} Etapa 3: defina em sua atividade: -
fonte
A biblioteca RetrofitHelper , escrita em kotlin, permitirá fazer chamadas de API, usando algumas linhas de código e você pode usar diferentes URLs, cabeçalhos e parâmetros em cada chamada.
Adicione vários URLs à sua classe de aplicativos, assim:
E, em seguida, use o URL necessário em sua chamada:
Para mais informações, consulte a documentação
fonte
URL dinâmico com o método Get and Post no Retrofit (MVVM)
Interface de Serviço de Retrofit:
Classe de serviço MVVM:
e Retrofit Client
por exemplo Este é o URL: https://gethelp.wildapricot.com/en/articles/549-changing-your
baseURL: https://gethelp.wildapricot.com
Restante @Url: / en / articles / 549-changing-your (qual é a sua classe de serviço retro)
fonte
fonte
Se você já possui seu código configurado e não deseja fazer alterações nas diferentes interfaces, use a solução descrita neste link . O ponto principal é o método
changeApiBaseUrl
que atualiza a URL e recria o construtor Retrofit.Você pode usá-lo da seguinte maneira:
fonte