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 "".
InformationsquelleAutor F1sher | 2016-01-17