我需要訪問其工作原理是這樣的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 –