2017-10-06 11 views
0

내 프로젝트의 GitLab을 recyclerView에 표시하여 retrofit2를 배우려고합니다. 하지만 정확히 무엇을 해야할지를 찾을 수 없습니다 !!! gitlab에 따라 wiki 개인 토큰을 발견했으며 list 개의 projrct가 있습니다.GitLap의 Retrofit2 및 baseurl

이 내 base을 내가 빌더 작성 :

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

을이 내 엔드 포인트 :

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

내 GitLabRepo의 POJO 클래스 :

class GitLabRepo { 

private String name; 

public String getName() { 
    return name; 
} 
} 

내가 가진 실행 한 후 이 오류 :

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) 

내 문제는 baseUrl과 관련되어 있지만 무엇이 정확합니까? gitLab BaseUrl은 무엇입니까? 그냥 내 프로젝트 이름을 recycelerview 목록에 나열하고 싶습니다.

****************** 편집 ****************** 내가 포스터의 사용

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

그리고 내가 가지고 :

{ 
"message": "401 Unauthorized" 
} 

내가 gitlab wiki에서 Status codes에보고가 쓴 :

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

하지만 을 추가 한 비공개 토큰.

답변

0

슬래시를 제거 '/'에서 즉,이

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

같은 코드를 변경하고 난 여전히 당신의 제안하지만 난을 '/'이

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

같은 엔드 포인트를 추가 취득 위의 오류가 발생했습니다 :'원인 : java.lang.IllegalArgumentException : baseUrl은/: https : //gitlab.com/api/v4/projects? private_token = xxxxxxxx /' – sayres

+0

에 끝나야합니다. 기본 URL의 끝에 /를 추가했습니다. 토큰 다음에이 사용자가 좋아하는 프로젝트 다음에 '/'추가하십시오./: {userid}/projects/ –

+0

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