首先,我是Android的新手,我认为自己做错了事。
我正在尝试对Apache Tomcat服务器使用摘要式身份验证。
我正在使用okhttp3库,并且可以使用基本身份验证来对该服务进行调用,但是我似乎看不到如何实现摘要身份验证。我使用org.apache.http.client.HttpClient库在Java中工作。
两者之间的区别似乎在于凭据的设置方式:
credentialProvider.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort(), "UserDatabase"),
new UsernamePasswordCredentials(mUsername, mPassword)
);
与我的实现相反,我的实现通常是从okhttp3 wiki复制的:
OkHttpClient client = new OkHttpClient.Builder()
.authenticator(new Authenticator() {
@Override public Request authenticate(Route route, Response response) throws IOException {
if (response.request().header("Authorization") != null) {
return null; // Give up, we've already attempted to authenticate.
}
String credential = Credentials.basic("superuser", "superuser");
return response.request().newBuilder()
.header("Authorization", credential)
.build();
})
.build();
AuthScope告诉Servlet容器在UserDatabase领域中查找用户名/密码凭据。
我正在尝试遵循:The second answer to this question,似乎大多数库都已更改,或者我做错了其他事情。
要添加到该参考文献中的HttpClient库,请添加
implementation group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
依赖于应用程序。
有更好的方法吗?