Android 改装2-Can';无法使用动态URL获取webAPI的基本身份验证

Android 改装2-Can';无法使用动态URL获取webAPI的基本身份验证,android,json,basic-authentication,retrofit2,Android,Json,Basic Authentication,Retrofit2,我很熟悉如何在Reformation2中使用动态URL,但在请求中发送用户名和密码时遇到问题。webAPI的工作原理是输入URL,在显示JSON响应后,屏幕上会显示用户名和密码的登录提示。该接口是为动态URL定义的: @GET public Call<User> getJSON(@Url String string); 另外,据我所知,我只能使用@GET而不是@POST,因为每当我尝试@POST时,响应代码是: I/System.out: Response status code:

我很熟悉如何在Reformation2中使用动态URL,但在请求中发送用户名和密码时遇到问题。webAPI的工作原理是输入URL,在显示JSON响应后,屏幕上会显示用户名和密码的登录提示。该接口是为动态URL定义的:

@GET
public Call<User> getJSON(@Url String string);
另外,据我所知,我只能使用@GET而不是@POST,因为每当我尝试@POST时,响应代码是:

I/System.out: Response status code: 405
起初,我尝试使用类似于使用编码标志的方法,因为这是一个如何将@PATH&@URL与第2个一起使用的示例,但没有成功。这就是为什么我尝试将用户名:password@prepend添加到URL。大多数其他示例都使用@POST方法


关于如何进行身份验证有何反馈或想法?谢谢

不知道如何在改型中实现,但您可以通过OkHttp拦截器添加它--

请确保将此客户端添加到您的改装实例--


不知道如何在改造中实现,但您可以通过OkHttp拦截器添加它--

请确保将此客户端添加到您的改装实例--


将基本身份验证与改进2结合使用的另一种方法是将身份验证字符串作为参数传递给接口方法

因此,您可以将方法签名更改为:

@GET
public Call<User> getJSON(@Url String string, @Header("Authorization") String myAuthString);
@GET
公共调用getJSON(@Url字符串,@Header(“授权”)字符串myAuthString);
然后这样称呼它:

Call<User> call = service.getJSON("https://api.url.com/", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
Call Call=service.getJSON(“https://api.url.com/“,”基本QWXHZGRPBJPCGVUIHNLC2FTZQ==”;
其中,您将用
qwxhzgrpjpvcgvuihnlc2ftzq==
替换Base64编码的
username:password
字符串


如果您需要为每个API调用传递用户名和密码,并且希望保持方法签名干净,那么最好使用自定义的
OkHttpInterceptor
方法。

将基本身份验证与改型2结合使用的另一种方法是将身份验证字符串作为参数传递给接口方法

因此,您可以将方法签名更改为:

@GET
public Call<User> getJSON(@Url String string, @Header("Authorization") String myAuthString);
@GET
公共调用getJSON(@Url字符串,@Header(“授权”)字符串myAuthString);
然后这样称呼它:

Call<User> call = service.getJSON("https://api.url.com/", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
Call Call=service.getJSON(“https://api.url.com/“,”基本QWXHZGRPBJPCGVUIHNLC2FTZQ==”;
其中,您将用
qwxhzgrpjpvcgvuihnlc2ftzq==
替换Base64编码的
username:password
字符串


如果您需要为每个API调用传递用户名和密码,并且希望保持方法签名的干净,那么最好使用自定义的
OkHttpInterceptor
方法。

感谢@Igreen的帮助,现在我能够成功地验证anks@Igreen的帮助,现在我可以成功地进行身份验证了。我将尝试一下@Frakur。总是很高兴有不止一种方法来完成它。我会试试@Frakur。总是很高兴有一个以上的方法来完成它。
@GET
public Call<User> getJSON(@Url String string, @Header("Authorization") String myAuthString);
Call<User> call = service.getJSON("https://api.url.com/", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");