【问题标题】:Can't authenticate with DefaultHttpClient无法使用 DefaultHttpClient 进行身份验证
【发布时间】:2012-06-19 11:35:18
【问题描述】:

我想在我的请求中添加身份验证标头。我正在使用来自 Apache httpclient 4.0 的 DefaultHttpClient。

我发现这样做是这样的:

URI uri = new URI("http://www.bla.bla/folder/");

String host = uri.getHost();
int port = uri.getPort();

httpClient.getCredentialsProvider().setCredentials(
        new AuthScope(host, port, AuthScope.ANY_SCHEME),
        new UsernamePasswordCredentials("myuser", "mypassword")
        );

这是执行的,即使使用调试器,我也看到 httpClient 的一些凭据变量是在执行请求时设置的。但我用 Charles 来检查网络流量,但没有身份验证标头。

变量的内容:

主机:www.bla.bla

端口:-1

顺便说一句。我启用了 Charles 作为代理来查看请求的标头,其中:

HttpHost proxy = new HttpHost("127.0.0.1", 8888, "http");
httpParameters.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

我认为这不应该改变我的标题,对 webproxy 毫无意义......无论如何,如果我禁用代理的东西它也不起作用(虽然我看不到标题的内容,但我想同理)。

还尝试使用 Softhinker.com 的帖子中所述的请求拦截器:How can I send HTTP Basic Authentication headers in Android?

我得到了完全相同的请求,没有身份验证标头。

我做错了什么?

提前致谢。

【问题讨论】:

标签: java authentication apache-httpclient-4.x


【解决方案1】:

我可以在请求中“手动”设置标头。

request.setHeader(new BasicHeader("Authorization", authstring));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2016-01-11
    • 2016-10-11
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多