我想在我的请求中添加身份验证标头。我正在使用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?
我得到完全相同的请求,没有身份验证标题。
我做错了什么?
提前致谢。
答案 0 :(得分:0)
我让它在请求中“手动”设置标题。
request.setHeader(new BasicHeader("Authorization", authstring));