0

我想将身份验证标头添加到我的请求中。我正在使用来自 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 的一些凭据变量是在执行请求时设置的。但我用查尔斯检查网络流量,没有身份验证标头。

变量的内容:

主持人:www.bla.bla

端口:-1

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

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

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

还尝试使用 Softhinker.com 的帖子中描述的请求拦截器:如何在 Android 中发送 HTTP 基本身份验证标头?

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

我究竟做错了什么?

提前致谢。

4

1 回答 1

0

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

request.setHeader(new BasicHeader("Authorization", authstring));
于 2012-06-19T12:26:09.650 回答