2016-06-20 15 views
1

Ich versuche HTTP-Post zu verwenden, um eine Datei an einen Webserver zu senden, der eine Standardauthentifizierung erfordert.HTTP-Standardauthentifizierung in Java mit Proxy

Mein Arbeitsplatz hat kürzlich eine Änderung am Proxy-Server implementiert und erfordert nun auch eine Standardauthentifizierung.

Wie kann ich meine Anmeldeinformationen für diese beiden Server in einer einzigen HttpPost-Anfrage eingeben?

Antwort

2

Stellt sich heraus, ich brauchte auch einen "Proxy-Authorization" Header hinzuzufügen.

HttpPost httpPost = new HttpPost("http://host:port/test/login"); 

String encoding = Base64Encoder.encode ("your_user:your_password"); 
httpPost.setHeader("Authorization", "Basic " + encoding); 

String proxyEncoding = Base64Encoder.encode ("proxy_user:proxy_password"); 
httpPost.setHeader("Proxy-Authorization", "Basic " + proxyEncoding); 

System.out.println("executing request " + httpPost.getRequestLine()); 
HttpResponse response = httpClient.execute(httpPost); 
0

Sie müssen in Ihrem HTTP-Header folgenden Zeile hinzufügen, wie in basic authorization beschrieben:

  1. Der Benutzername und das Passwort werden mit einem einzigen Doppelpunkt kombiniert.

  2. Die resultierende Zeichenfolge wird mit der RFC2045-MIME-Variante Base64 codiert, außer nicht auf 76 Zeichen/Zeile beschränkt.

  3. Die Autorisierungsmethode und ein Leerzeichen, d.h. "Basic", werden dann vor die codierte Zeichenfolge gesetzt.

Schauen Sie sich beispielsweise mit Apache Httpclient:

String encoding = Base64Encoder.encode ("your_login:your_password"); 
HttpPost httppost = new HttpPost("http://host:post/test/login"); 
httppost.setHeader("Authorization", "Basic " + encoding); 

System.out.println("executing request " + httppost.getRequestLine()); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
+0

So sind der Benutzername und das Passwort für den Webserver. Was ist mit dem Benutzernamen und Passwort des Proxy-Servers? – satbot