Ich brauche eine API für den Zugriff auf der wie folgt funktioniert:Benutzername Passing auf eine HttpGet Anfrage
curl https://api.com/ratings/v1/ -u [your token here]:
Das Token ist der Benutzername, die die HttpGet
Anforderung übergeben werden soll. Ich versuche, das gleiche in der folgenden Art und Weise mit Java zu tun:
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();
}
ich hinter Proxy bin, so ist mir ein HttpHost
mit den Proxy-Details erstellen, den Proxy für das HttpClient
Objekt Einstellung und Weitergabe der Anmeldeinformationen für Proxy-Authentifizierung credentialsProvider
in den folgenden Zeilen von Code verwendet:
HttpHost proxy = new HttpHost("proxy.com", 8080, "http");
HttpClient httpClient = HttpClients.custom().setProxy(proxy).setDefaultCredentialsProvider(credentialsProvider).build();
ich Passieren der username
zum HttpGet
durch die header
wie folgt ergänzt:
toesGet.addHeader("Username", "[your token here]");
, wenn ich den Code ausführen, bekomme ich diese Antwort: (? Oder bedeutet das etwas anderes) HTTP/1.1 401 UNAUTHORIZED
Dies zeigt, dass ich nicht die username
auf die HttpGet
Anfrage in der richtigen Art und Weise bin vorbei. Also, was ist der richtige Weg den Benutzernamen an die Anfrage zu übergeben?
Jede Hilfe wäre willkommen, Danke!
Hinweis: Die usrname
und passwrd
ich in dem credentialsProvider gesetzt ist für die Proxy-Authentifizierung. Sie haben nichts mit der HttpGet-Anfrage selbst zu tun. Der Token, den ich übergeben muss, unterscheidet sich von dem in den Anmeldeinformationen angegebenen Code usrname
.
Aufruf 'setDefaultCredentialsProvider' sollte ausreichen, vorausgesetzt, Ihre Benutzername und Passwort sind korrekt. Soweit ich weiß, ist 'Benutzername' keine gültige Kopfzeile, also macht es wahrscheinlich nichts. – VGR
Danke für den Kommentar. Die 'username' und' password', die ich im 'credentialsProvider' gesetzt habe, sind für die Proxy-Authentifizierung. Sie haben nichts mit der HttpGet-Anfrage selbst zu tun. @VGR –