Android Ntlm代码仅适用于三星设备
我在此url上使用NTLM身份验证代码; 但它只在三星设备上进行认证。当我尝试Nexus4时,从服务器收到“由于无效凭据而拒绝访问”错误消息。即使在相同的Android版本中 可能吗 我得到这样的httpclient对象Android Ntlm代码仅适用于三星设备,android,httpclient,ntlm,Android,Httpclient,Ntlm,我在此url上使用NTLM身份验证代码; 但它只在三星设备上进行认证。当我尝试Nexus4时,从服务器收到“由于无效凭据而拒绝访问”错误消息。即使在相同的Android版本中 可能吗 我得到这样的httpclient对象 Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create() .register(AuthSchem
Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
.register(AuthSchemes.NTLM, new JCIFSNTLMSchemeFactory())
.register(AuthSchemes.BASIC, new BasicSchemeFactoryHC4())
.register(AuthSchemes.DIGEST, new DigestSchemeFactoryHC4())
.build();
CredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new NTCredentials(NTLM_USERNAME, NTLM_PASSWORD, "", ""));
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultAuthSchemeRegistry(authSchemeRegistry)
.setDefaultCredentialsProvider(cp)
.build();
注册表authSchemeRegistry=RegistryBuilder.create()
.register(AuthSchemes.NTLM,新的JCIFSNTLMSchemeFactory())
.register(AuthSchemes.BASIC,新的BasicSchemeFactoryHC4())
.register(AuthSchemes.DIGEST,新的DigestSchemeFactoryYHC4())
.build();
CredentialsProvider cp=新的基本概念Provider();
cp.setCredentials(新的AuthScope(AuthScope.ANY_主机、AuthScope.ANY_端口)、新的NTCredentials(NTLM_用户名、NTLM_密码,“,”);
CloseableHttpClient httpClient=HttpClients.custom()
.setDefaultAuthSchemeRegistry(authSchemeRegistry)
.setDefaultCredentialsProvider(cp)
.build();
我真的不知道你为什么会有这个bug,但是如果你只需要NTML身份验证,你可以尝试使用我的代码
public class JsonRpcClient {
private static final String HOST = "blabla.yourhostname.com";
private final AbstractHttpClient httpClient;
public JsonRpcClient(String username, String password) {
httpClient = new DefaultHttpClient();
httpClient.getAuthSchemes().register("ntlm", new JCIFSNTLMSchemeFactory());
httpClient.getCredentialsProvider().setCredentials(
new AuthScope(HOST, -1),
new NTCredentials(username, password, "", ""));
}
...
}
我可以在nexus 4和模拟器上使用它。共享一部分源代码,您可以在其中执行smth,如“httpClient.getAuthSchemes().register(“ntlm”,new NTLMSchemeFactory());”等。