GitLap中的Retrofit2和baseurl
问题描述:
我试图通过将项目的GitLab名称显示到recyclerView中来学习retrofit2。但我无法找到究竟该做什么! 根据gitlab wiki我发现projrct的私人标记和list。GitLap中的Retrofit2和baseurl
这是我的baseUrl和我创建了一个建设者:
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"
}
我看到成Status codes
在gitlab wiki并写有:
401 Unauthorized The user is not authenticated, a valid user token is necessary.
,但我已经加入私人令牌。
答
删除斜杠“/”从获得即,更改代码这样
@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());
我做你的建议,但我仍然得到了上面的错误:'引起:java.lang.IllegalArgumentException:baseUrl必须以/:https://gitlab.com/api/v4/projects?private_token = xxxxxxxx /' – sayres
结尾/你在基址的末尾加了/在令牌之后,然后在项目之后添加'/'它也会像这个users /:{userid}/projects/ –
是的。 '.baseUrl(“https://gitlab.com/api/v4/projects?private_token=xxxx/”)' – sayres