2017-10-06 5 views
0

J'essaie d'apprendre retrofit2 en montrant le nom GitLab de mon projet dans recyclerView. mais je ne peux pas trouver ce qui est exactement ce qu'il faut faire !!! selon gitlab wiki J'ai trouvé des jetons privés et list de projrct.Retrofit2 et baseurl dans GitLap

c'est mon baseUrl et je crée un constructeur:

Retrofit.Builder builder = new Retrofit.Builder() 
      .baseUrl("https://gitlab.com/api/v4/projects?private_token=xxxxxx") 
      .addConverterFactory(GsonConverterFactory.create()); 

ce qui est mon point final:

@GET("https://stackoverflow.com/users/:{userid}/projects") 
Call<List<GitLabRepo>> reposForUser(@Path("userid") int user); 

ma classe GitLabRepo pojo:

class GitLabRepo { 

private String name; 

public String getName() { 
    return name; 
} 
} 

après l'exécution, je suis cette erreur:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sayres.createandroidclient/com.example.sayres.createandroidclient.MainActivity}: java.lang.IllegalArgumentException: baseUrl must end in /: https://gitlab.com/api/v4/projects?private_token=rjezfrSUTn3fcugxLujm/ 
               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
               at android.app.ActivityThread.-wrap12(ActivityThread.java) 
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
               at android.os.Handler.dispatchMessage(Handler.java:102) 
               at android.os.Looper.loop(Looper.java:154) 
               at android.app.ActivityThread.main(ActivityThread.java:6119) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
               Caused by: java.lang.IllegalArgumentException: baseUrl must end in /: https://gitlab.com/api/v4/projects?private_token=xxxxxx/ 
               at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:513) 
               at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:456) 
               at com.example.sayres.createandroidclient.MainActivity.onCreate(MainActivity.java:34) 
               at android.app.Activity.performCreate(Activity.java:6679) 

Je sais que mon problème est lié à baseUrl, mais ce qui est correct gitLab BaseUrl? Je veux juste montrer mon nom du projet dans la liste à la liste recycelerview.

****************** Modifier ****************** J'utilise l'affiche:

https://gitlab.com/api/v4/projects?private_token=******/users/:******/projects 

et je suis arrivé:

{ 
"message": "401 Unauthorized" 
} 

Je vois en Status codes à gitlab wiki et écrit là:

401 Unauthorized The user is not authenticated, a valid user token is necessary. 

mais j'ai ajouté Jetons Privés.

Répondre

0

supprimer la barre oblique «/» de get-à-dire, changer votre code comme celui-ci

@GET("users/:{userid}/projects/") 
Call<List<GitLabRepo>> reposForUser(@Path("userid") int user); 

et ajoutez «/» dans votre point final comme celui-ci

Retrofit.Builder builder = new Retrofit.Builder() 
     .baseUrl("https://gitlab.com/api/v4/projects?private_token=xxxxxx/") 
     .addConverterFactory(GsonConverterFactory.create()); 
+0

Je fais votre suggestion mais je reste au-dessus de l'erreur: 'Causé par: java.lang.IllegalArgumentException: baseUrl doit se terminer par /: https: //gitlab.com/api/v4/projects? private_token = xxxxxxxx /' – sayres

+0

avez-vous ajouté/à la fin de l'URL de base après le jeton, ajoutez add '/' après les projets aussi comme les utilisateurs /: {userid}/projects/ –

+0

yes. '.baseUrl (" https://gitlab.com/api/v4/projects?private_token=xxxx/ ")' – sayres