2017-09-25 1 views
0

Récemment, Quand je prévois de réécrire le programme de l'entreprise minière. J'utilise le RxJava + OkHttp + Retrofit. Mais j'ai un problème.Changer baseurl avec okhttp

  1. Notre application a une seule interface d'accès qui peut fournir l'adresse de base pour tous les modules. Le format est le suivant.

enter image description here

  1. Mon intention est de remplacer dynamiquement baseurl avec intercepteurs, le code se lit comme suit:

enter image description here

C'est mon code mais j'ai trouvé une question, l'URL convertie devient ainsi: www.xxapi.com:80/authorize/login/{#version code} (Ceci est faux).

Ceci est faux. Ce champ de version devrait être derrière l'adresse de base. L'URL correcte comme ceci: www.xxapi.com:80/{#version code}/authorize/login (C'est exact).

J'ai essayé plusieurs façons, et je ne peux pas changer l'emplacement du champ de version. Je ne sais vraiment pas comment continuer, je suis désolé.

+0

[S'il vous plaît ne pas poster votre code comme une image.] (// meta.stackoverflow.com/q/285551) – Henry

+0

désolé, je l'ai utilisé pour la première fois. –

Répondre

0

Remplacez l'appel par addPathSegment(version) par un appel à setPathSegment(0, version).

https://square.github.io/okhttp/3.x/okhttp/okhttp3/HttpUrl.Builder.html#setPathSegment-int-java.lang.String-

+0

Si j'écris de cette façon, il deviendra: www.xxapi.com:80/{#version code}/login. Le premier champ de chemin est remplacé –

+0

Merci, professeur, il me semble avoir trouvé une bonne idée.par request.url(). Segments(); je peux obtenir une collection de listes, merci. –