无法使用DefaultHttpClient进行身份验证

时间:2012-06-19 11:35:18

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

我想在我的请求中添加身份验证标头。我正在使用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的网络流量,并且没有身份验证标题。

vars的内容:

主持人:www.bla.bla

port:-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?

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

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我让它在请求中“手动”设置标题。

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