Android Ntlm代码仅适用于三星设备

Android Ntlm代码仅适用于三星设备,android,httpclient,ntlm,Android,Httpclient,Ntlm,我在此url上使用NTLM身份验证代码; 但它只在三星设备上进行认证。当我尝试Nexus4时,从服务器收到“由于无效凭据而拒绝访问”错误消息。即使在相同的Android版本中 可能吗 我得到这样的httpclient对象 Registry<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create() .register(AuthSchem

我在此url上使用NTLM身份验证代码;

但它只在三星设备上进行认证。当我尝试Nexus4时,从服务器收到“由于无效凭据而拒绝访问”错误消息。即使在相同的Android版本中

可能吗

我得到这样的httpclient对象

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());”等。