Android - 基本身份验证的HTTP请求

时间:2012-01-19 03:05:36

标签: android

所以基本上我需要我的Android应用程序使用url连接到Web服务 “http:// username:password@0.0.0.0”又名基本身份验证。 显然,在允许访问之前,Web应用程序会检查用户名和密码,否则不允许请求。

我的问题是我尝试的所有方法总是说未经授权(响应代码401),无论我尝试连接到网址的类和方法的组合是什么。

有问题的网络应用程序旨在返回只有un / pw清除的东西,否则它什么都不返回,web应用程序和un / pw等都被检查和清除。

所有人都没有正确的方法将请求发送到这样的网址并使其正常工作吗?

android api8 btw

更新 事实证明我的问题是由于使用NTLM Windows身份验证的Web应用程序,androids / apache http库不直接支持,现在调查适当的解决方法

2 个答案:

答案 0 :(得分:8)

这里有一些代码构成我的一个非常古老的项目。我使用基本身份验证来进行某些Web服务,这在当时有效。我不确定自那时起是否有更新的api(这是Android 1.6),但它仍然有用。

        HttpGet request = new HttpGet();
        request.setURI(new URI(url));

            UsernamePasswordCredentials credentials =
                new UsernamePasswordCredentials(authUser, authPass);
            BasicScheme scheme = new BasicScheme();
            Header authorizationHeader = scheme.authenticate(credentials, request);
            request.addHeader(authorizationHeader);

基本上,Basic HTTP auth是用户和密码的简单哈希。浏览器允许您将这些值填充到网址中,但实际上它会将基本身份验证标头添加到您的请求中。

答案 1 :(得分:1)

对于所有寻找NTLM身份验证解决方案的人来说,此页面都描述了必要的内容

http://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html#ntlm