HttpURLConnection Problem mit extra Headern

3

3c5x9

Neues Mitglied
0
Hi zusammen,
Ich hab da mal ein Problem, über das evtl. schon jemand gestolpert ist.

Ich habe einen Webserver, der etwas pingelig ist bei der Auswertung der HTTP-Header. Am folgenden Beispiel gut zu sehen:

Code:
root@rechner:/#  wget "http://remotehost.de" --header 'Authorization: Basic  cm9vdDpyaWWW'
Connecting to http://remotehost.de[83.135.88.1]:8010
currentservicedata    100%  |**********************************************************************************************************************************************************|    836       00:00 ETA         |     0       --:-- ETA
root@rechner:/#  wget "http://http://remotehost.de" --header 'authorization: Basic  cm9vdDpyaWWW'
Connecting to http://remotehost.de[83.135.88.1]:8010
wget:  server returned error 401: HTTP/1.1 401 Unauthorized
Er akzeptiert das Authorization-Field nur wenn er wirklich "Authorization" geschickt wird. Bei "authorization" erkennt er es nicht.

Nu hab ich in Android (SDK 1.6) in meiner anwendung folgenden Code um diese Authorization zu senden, plus noch 2 Felder die das Problem zusätzlich verdeutlichen:

Code:
URL url = new URL("http://someadress");
HttpURLConnection  http = (HttpURLConnection) url.openConnection();
String encoding =  Base64Converter.encode((_profile.getUsername() + ":" +  _profile.getPassword()).getBytes());
http.setRequestProperty("User-Agent",  "Enigmanoid");
http.setIfModifiedSince(123456789);
http.setRequestProperty("Authorization",  "Basic " + encoding);
http.getInputStream();
Ich habe, nachdem ich ständig nur "HTTP/1.1 401 Unauthorized" von Server zurück bekommen habe, die Anfragen über einen Proxy umgeleitet. Und da kann man dann sehen, das alles was ich an zusätzlichen Headern schicke, in Kleinschreibung gesendet wird:

Code:
user-agent:  Enigmanoid
if-modified-since: Fri, 02 Jan 1970 10:17:36 GMT
authorization:  Basic cm9vdDpyaWWW
Connection: keep-alive
Wenn ich den User-Agent in meinem Code weg lasse und nicht überschreibe, wird er korrekt als "User-Agent: Java0" gesendet. Auch "if-modified-since" müsste als "If-Modified-Since" gesendet werden.

Hab das nun im Emulator und auf dem G1 getestet, beide Male das gleiche Verhalten.

Hat da jemand eine Idee zu, wie man dieses "".toLowerCase() abschalten kann?

Gruß
3zeh
 
Zuletzt bearbeitet:
Für HTTP-Connections arbeite ich grundsätzlich mit dem HttpClient von Apache, der auch Bestandteil von Android ist.

Das könnte dann so aussehen:
Code:
    URI uri = new URI("http://irgendwas");
    DefaultHttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(uri);
    post.setHeader("User-Agent",  "Enigmanoid");
    HttpResponse response = client.execute(post);
Gruß
Chris
 
Zuletzt bearbeitet:
Hi Chris,
Lüppt. Dank dir.

Nun muss ich ihm noch über die Methode SSL mit selbst generierten Zertifikaten bei bringen. Aber das wird schon. Hast mir geholfen. Danke schön.

Gruß
3zeh
 

Ähnliche Themen

L
Antworten
15
Aufrufe
890
jogimuc
J
S
Antworten
4
Aufrufe
954
Sempervivum
S
B
Antworten
4
Aufrufe
430
bb321
B
Zurück
Oben Unten