Comment le programme d'installation de Rénovation sans baseUrl
Mon apiPath est entièrement dynamique. Je vais avoir des éléments contenant des champs tels que "ipAddress" et "la directive sslprotocol". Basé sur eux, je peux construire mon url:
private String urlBuilder(Server server) {
String protocol;
String address = "";
if (AppTools.isDeviceOnWifi(activity)) {
address = serverToConnect.getExternalIp();
} else if (AppTools.isDeviceOnGSM(activity)) {
address = serverToConnect.getInternalIp();
}
if (server.isShouldUseSSL()) {
protocol = "https://";
} else {
protocol = "http://";
}
return protocol + address;
}
Donc mon protocole + adresse: http://+ 192.168.0.01:8010 = http://192.168.0.01:8010
Et je voudrais l'utiliser comme ça:
@FormUrlEncoded
@POST("{fullyGeneratedPath}/json/token.php")
Observable<AuthenticationResponse> authenticateUser(
@Path("fullyGeneratedPath") String fullyGeneratedPath,
@Field("login") String login,
@Field("psw") String password,
@Field("mobile") String mobile);
Donc chemin d'accès complet pour authenticateUser serait http://192.168.0.01:8010/json/token.php - par exemple.
Cela signifie que je n'ai pas besoin basePath parce que je créer ensemble basePath moi-même en fonction sur le serveur je veux me connecter.
Mon rénovation de l'installation est:
@Provides
@Singleton
Retrofit provideRetrofit(OkHttpClient okHttpClient,
Converter.Factory converterFactory,
AppConfig appConfig) {
Retrofit.Builder builder = new Retrofit.Builder();
builder.client(okHttpClient)
.baseUrl(appConfig.getApiBasePath())
.addConverterFactory(converterFactory)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create());
return builder.build();
}
Si je supprime baseUrl puis-je obtenir de l'erreur que ce paramètre est obligatoire. J'ai donc mis mon apiBasePath à:
public String getApiBasePath() {
return "";
}
Puis-je obtenir de l'erreur instantanément après que j'ai créer rénovation exemple:
java.lang.IllegalArgumentException: Illegal URL:
Comment le résoudre?
- T-il vous permettre d'utiliser "http://" comme url de base?
- Hmm non, j'obtiens: java.lang.IllegalArgumentException: Illégal URL: http://
- vous pouvez utiliser le @Url annotation. Mais, vous aurez à construire chaque url est complètement
- Si j'ai utilisé @Url alors quelle devrait être ma rénovation baseUrl si elle ne peut pas être "".
Vous devez vous connecter pour publier un commentaire.
De source (Nouvelle URL résoudre concept), vous pouvez simplement spécifier le chemin d'accès complet dans la requête post.
@GET
)simplement l'utiliser comme ceci
source
Si vous êtes d'accord avec la création d'une nouvelle
RestAdapter
exemple à chaque fois que vous voulez faire un appel d'api, vous pouvez créer une nouvelle carte avec l'url de base en tant que paramètre.En utilisant des Url absolues avec Rénovation
Oui vous pouvez le faire. J'ai fait comme ceci:
Fondamentalement, vous devez créer un objet de rénovation une fois que vous avez connu l'url du point de terminaison. Je suppose que sans plus d'explication est nécessaire que le code est auto-explicatif.
En supposant que seule l'url de base est de se changer.
Ma façon d'utiliser rénovation
Et ici, j'ai une classe générique et à l'intérieur, j'ai ma méthode
où AppServiceApi interface toutes mes fin de l'url et le type de méthode
Avec la Rénovation 2, vous devez mettre l'url de base de toute façon. Si elle n'est pas connue, alors vous ne pouvez mettre n'importe quelle url, en général, il est bon d'utiliser
http://localhost/
.