我需要访问其工作原理是这样的API:传递用户名到HTTPGET请求
curl https://api.com/ratings/v1/ -u [your token here]:
令牌是应该传递给HttpGet
请求的用户名。我试图用java做相同的方式如下:
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("usrname", "passwrd"));
HttpHost proxy = new HttpHost("proxy.com", 8080, "http");
HttpClient httpClient = HttpClients.custom().setProxy(proxy).setDefaultCredentialsProvider(credentialsProvider).build();
HttpGet toesGet = new HttpGet("https://api.com/ratings/v1/");
toesGet.setHeader("Accept", "Application/Json");
toesGet.addHeader("Username", "[your token here]");
try {
HttpResponse toes = httpClient.execute(toesGet);
System.out.println(toes.getStatusLine());
System.out.println(toes.getEntity().toString());
} catch (Exception e) {
e.printStackTrace();
}
我是一个落后的代理,所以我创建与代理细节HttpHost
,设置为HttpClient
对象代理并传递凭据使用下面的代码行credentialsProvider
代理认证:
HttpHost proxy = new HttpHost("proxy.com", 8080, "http");
HttpClient httpClient = HttpClients.custom().setProxy(proxy).setDefaultCredentialsProvider(credentialsProvider).build();
我传递了username
到HttpGet
通过添加header
这样的:
toesGet.addHeader("Username", "[your token here]");
当我运行的代码,我得到这样的回应:(?或者这是否意味着别的东西)HTTP/1.1 401 UNAUTHORIZED
这表明我没有通过username
到HttpGet
请求以正确的方式。那么将用户名传递给获取请求的正确方法是什么?
任何帮助将不胜感激,谢谢!
说明:usrname
和passwrd
我在credentialsProvider中设置了代理验证。它们与HttpGet请求本身无关。我需要通过的令牌与凭证中提供的usrname
不同。
调用'setDefaultCredentialsProvider'应该是足够的,假设你的用户名和密码都是正确的。据我所知,'Username'根本不是一个有效的头文件,所以它可能什么都不做。 – VGR
感谢您的评论。我在'credentialsProvider'中设置的'username'和'password'用于代理验证。他们与HttpGet请求本身无关。 @VGR –