Android httpclient - 获取具有抢占式身份验证的文件

时间:2010-06-02 18:25:49

标签: android httpclient

我在使用此示例代码获取网站的HTML代码时遇到问题。

http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientPreemptiveBasicAuthentication.java

我必须使用上面的那个,因为我需要在Android中为我的应用程序进行抢先身份验证。

我认为解决方案可能是httpget对象,但我仍然只得到错误:( C.F. HttpGet httpget = new HttpGet(“/ index.html”);

是否有人知道如何使用链接的示例代码获取上面httpget对象中指定的文件内容。它肯定叫,但现在我只能获得状态代码等等......

感谢4位帮助

4 个答案:

答案 0 :(得分:13)

去年我解决这个问题时,我放弃了HttpClient的原生抢先式HTTP身份验证,而只是rolled the header myself

答案 1 :(得分:11)

备选方案1 :请阅读提出基于Http Basic Authentication with Android的解决方案的HttpClient 4 official docs。我没有亲自测试过,所以我很高兴知道它是否真的有效。

编辑:我刚试过它,它就像一个魅力。

备选方案2 : 您还可以添加@CommonsWare提议的“授权”HTTP标头:

post.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password));

在这种情况下,您需要Base64编码器来编码包含用户名和密码的字符串。你可以在互联网上找到很多实现。

答案 2 :(得分:9)

对我来说,上面的示例在Android上无效。我必须做以下事情:

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP));

答案 3 :(得分:7)

谢谢janex。

我必须在Android上做同样的事情。

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP));

欢呼声