【发布时间】: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?
我得到了完全相同的请求,没有身份验证标头。
我做错了什么?
提前致谢。
【问题讨论】:
-
解释和解决方案都包含在这个线程中......stackoverflow.com/questions/18108783/…
标签: java authentication apache-httpclient-4.x