Parameter einer URLConnection

Status
Nicht offen für weitere Antworten.
E

enemy

Gast
hi,

also ich weiß das folgende frage auf anhieb recht blöd und sinn frei erscheinen mag.
allerdings versuche ich gerade einen clienten zu "emulieren" bzw. nachzubauen der in python geschrieben ist. und das ganze geschieht in einer java opensource application die auf urlconnection bzw. httpurlconnection setzt. ich will also das exakt selbe verhalten erzielen und dafür das vorhandene java programm entsprechend anpassen.

das problem ist, dass die httpurlconnection per default folgende parameter setzt: (und zwar immer ans ende, d.h. erst kommen die userset parameter danach die default)
Host: xxx
Accept: text/html, image/gif, image/jpeg, *; q=.2, ; q=.2

der request des python clienten ist allerdings folgendermaßen aufgebaut:
Host: xxx
userset parameter

ich will also bei meiner connection den host parameter an den anfang setzen und den accept parameter ganz entfernen.
vorschläge? :roll:

die api sieht leider so ein verhalten nicht vor, da es dem server egal sein sollte welche reihenfolge die parameter haben bzw. wird er diejenigen ignorieren die er nicht braucht... ist zwar logisch, aber bei meinem vorhaben nicht gerade vorteilhaft :/


mfg
 
T

tuxedo

Gast
Wenn die Reihenfolge egal ist, wieso ist das dann für dich nicht gerade vorteilhaft?

Hab das Problem an sich nicht wirklich verstanden.

- Alex
 
E

enemy

Gast
hi,
ne, ich meinte das idr die reihenfolge egal ist, deshalb gibt es keine entsprechenden api funktionen um das zu steuern.

aber ICH will die reihenfolge beeinflussen, da ich einen anderen clienten emulieren bzw. nachahmen will...

client (fertige opensource anwendung) an dem ich arbeite sendet folgendes:
GET .............
User-Agent: xxx (manuell mit setRequestProperty gesetzt)
Connection: close (manuell mit setRequestProperty gesetzt)
Accept-Encoding: gzip (manuell mit setRequestProperty gesetzt)
Host: xxx (default)
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 (default)

der client den ich emulieren will sendet folgendes:
GET .....
Host: xxx
Accept-Encoding: gzip
User-Agent: xxx


es wird also ein default parameter weggelassen und einen muss ich in der folge ändern...
es stellt sich für mich also die frage wie ich das am besten anstelle d.h. also, was nehme ich am besten um so wenig wie möglich im code zu ändern?
 
T

tuxedo

Gast
Ist es für die kommunikation denn nicht wurscht ob der Parameter jetzt noch da ist oder nicht?!

Ich mein, bis auf die vermutlich "optionalen" Parameter ist das doch gleich?! Sollte den Server doch nicht stören?

Oder geht's dir darum sagen zu können "meine implementierung gleicht zu 100,00% der des echten clients, auch wenn Teille davon überflüssig sind und die Funktion nicht weiter beeinflussen" ??

- Alex
 
E

enemy

Gast
tuxedo hat gesagt.:
Ist es für die kommunikation denn nicht wurscht ob der Parameter jetzt noch da ist oder nicht?!

Ich mein, bis auf die vermutlich "optionalen" Parameter ist das doch gleich?! Sollte den Server doch nicht stören?
völlig richtig


Oder geht's dir darum sagen zu können "meine implementierung gleicht zu 100,00% der des echten clients, auch wenn Teille davon überflüssig sind und die Funktion nicht weiter beeinflussen" ??
exakt! genau das versuche ich zu erreichen.

eine idee war es auf den HTTPClient von apache auszuweichen, allerdings hier wieder das selbe problem mit den 'default' parametern.


was ich nun versuchen werde ist, eine klasse (sun.net.www.protocol.http.HttpURLConnection) lokal zu speichern und entsprechend meinen bedürfnissen anzupassen.
z.b. durch eine methode
Code:
public void cleanProperties()
danach könnte ich die liste frisch füllen.

ist aber natürlich reiner pfusch die api zu ändern :shock:
auch schon wegen dem sun package, aber java.net.URLConnection ist abstract und die klasse aus sun.* ist mir die einzig bekannte implementierung der URLConnection.

desshalb sind andere ideen herzlich willkommen :idea:

mfg
 
T

tuxedo

Gast
Man man man. Wieso der ganze aufwand wenn der Effekt der gleiche ist?!

Du kannst natürlich auch direkt eine Socketverbindung aufbauen und den ganzen Header selbst rausschieben. Dann bist du völlig unabhängig von URLConnection, und musst auch keinen Code-Klau bei den SUN Klassen betreiben....So viel "mehr" Aufwand kann das nicht sein, schließlich weißt du ja schon explizit was im Header zu stehen hat...

- Alex
 
E

enemy

Gast
ich bin mir nicht so sicher ob du mir weiter helfen würdest, wenn ich dir genau sagen würde was ich da eigentlich mache :lol: :roll:

aber gut, ich werde schauen wie viel aufwand es währe das ganze mit sockets zu machen... da ich ja wie gesagt an einer opensource applikation bastle, und diese ein stolzes protokoll von 3500 zeilen code hat, müsste ich schon einiges anpassen.

ist aber wohl die einzigst saubere lösung^^
 
T

tuxedo

Gast
Wieso anpassen? H*rrg*tt. Willst du's nicht verstehen :L

Schreib dir doch, basierend auf Sockets, deine eigene URLConnection... Wird schon irgend ein Interface geben das du implementieren kannst, oder eine Klasse von der du erben kannst ... Dann musst du nnur noch die imports entsprechend austauschen... Und dank der Refactoring-Funktion moderner IDEs sollte sowas doch kein Problem darstellen?!

Und selbst wenn es nix zum erben gibt: Was spricht dagegen die Methoden exakt so aussehen zu lassen wie die von SUN?!

Scheint wieder ein typisches Tellerrad-Phänomen zu sein... ;-)

- Alex ???
 
E

enemy

Gast
ja habe ich doch geschrieben das ich es probieren werde :bahnhof:
 
T

tuxedo

Gast
?? Wenn du die Klasse "URLConnection" imitierst, warum musst du dann dein 3500 LOC Protocoll anpassen?!

- Alex
 
E

enemy

Gast
hast du mal je den inhalt angeschaut?
der ganze baum der an URLConnection hängt, und die funktionalität implementiert, ist etwa 30kloc schwer wie ich gesehen habe ;-)

habe nun mal das package local hinzugefügt und angepasst. es sind nur 2 zeilen die ich löschen musste, um das zu bekommen was ich will...

die sehen übrigends etwa so aus: properties.setIfNotSet("Host", ...) und eben das selbe mit "Accept" *g
soviel stress nur wegen zwei zeilen :/
 
E

enemy

Gast
ich nochmal :)
es ist nun reine neugier, aber viell. weisst du was drüber...

Code:
URL url = new URL("http://www.google.com/");
System.out.println(url.openConnection().getClass().getName());

AUSGABE: sun.net.[url]www.protocol.http.HttpURLConnection[/url]

laut google und auch meinem wissen sollte man das sun package nicht verwenden, da es sich jeder zeit ändern kann...
warum ist es aber bereits implementiert?
kann es sein das diese URLConnection noch so eine art prototyp ist und später evtl. noch geändert wird?
 
T

tuxedo

Gast
Du frägst etwas zu "genau" nach der Klasse. Da liegt das Problem ...

--> public class sun.net.www.protocol.http.HttpURLConnection extends java.net.HttpURLConnection { ... }

Normalerweise steckt man das, was aus "openConnection()" rauskommt, in java.net.UrlConnection oder eben in java.net.HttpUrlConnection ...

Die "Basis" ist eben ein sun Paket. Arbeiten tust du aber mit einer Klasse aus dem java.net Package ... Also passt alles.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
S Socket XML-Daten und Parameter an Server schicken Netzwerkprogrammierung 3
P URL Parameter auslesen Netzwerkprogrammierung 5
C JSP Parameter auslesen Netzwerkprogrammierung 1
C POST-Parameter aus HTML-Script lesen Netzwerkprogrammierung 1
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
N Link aus einer E-Mail aufrufen Netzwerkprogrammierung 2
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
O HTTP Einloggen auf einer Homepage Netzwerkprogrammierung 8
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
Z Debug-Info einer JavaSE Applikation auf Webserver Netzwerkprogrammierung 0
S HTTP Würdet Ihr Euch bei einer intern genutzten Anwendung auf Cookies verlassen? Netzwerkprogrammierung 2
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
D Überwachen einer SMB-Freigabe bei Änderungen im Dateisystem Netzwerkprogrammierung 0
L FTP Lesen einer Datei vom Server - Aufgehangen Netzwerkprogrammierung 0
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
S Automatischer Login auf einer Webseite Netzwerkprogrammierung 12
D JavaMail: HTML Code einer Mail Netzwerkprogrammierung 9
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
D Aus einer URL die Dateien lesen Netzwerkprogrammierung 5
Dit_ RMI RMI-Server und gleichzeitiger Aufruf einer Methode Netzwerkprogrammierung 14
T Ladezeit einer Seite mit HttpURLConnection und Bildern Netzwerkprogrammierung 2
M bild von einer url erzeugen Netzwerkprogrammierung 7
V Quelltaxt einer Website auslesen funktioniert nicht Netzwerkprogrammierung 2
V Angezeigten Text einer Website erfragen Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
A HTTP Download einer Datei mit "Statistiken" Netzwerkprogrammierung 2
S Port auf einer bestimmten IP-Adresse auslesen? Netzwerkprogrammierung 6
S netzwerkprotokoll auf basis einer tcp verbindung erstellen Netzwerkprogrammierung 9
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
Ollek Download einer Datei durch SFTP mit Java Netzwerkprogrammierung 12
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
H HTTP Einloggen auf einer HTML (php) Seite Netzwerkprogrammierung 6
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
F Entwicklung einer Software zur Steuerung und Überwachung von Netzwerkgeräten Netzwerkprogrammierung 4
R Versenden einer MIME-Datei per E-Mail [solved] Netzwerkprogrammierung 5
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10
Pithecanthropus Konzeptionelle Ausarbeitung einer synchronen Kommunkation (Server/Client)) Netzwerkprogrammierung 6
A attachment einer Mail speichern Netzwerkprogrammierung 5
C Dateigröße einer Datei im Internet ermitteln Netzwerkprogrammierung 2
J programm zum autom. ausdruck einer webseite Netzwerkprogrammierung 2
G Unvollständiges Laden einer Seite Netzwerkprogrammierung 2
M Rechner einer Domäne auslesen? Netzwerkprogrammierung 3
KNeuhaus (Windows) Authentication VON einer Java-App aus. Netzwerkprogrammierung 2
Rontu Problem beim Übertragen einer Datei Netzwerkprogrammierung 9
D Content einer email in sql-datenbank speichern Netzwerkprogrammierung 9
M RMI direkte Verbindung mit einer Mysql datenbank Netzwerkprogrammierung 13
T Quelltext einer Website auslesen Netzwerkprogrammierung 3
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
J Funktion zum Maskieren der Sonderzeichen einer URL Netzwerkprogrammierung 2
J Zeilenweises auslesen aus einer Datei über Server Netzwerkprogrammierung 6
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
C IP adresse anhand einer domain adresse auslesen / ermitteln Netzwerkprogrammierung 3
V Einen Eintrag aus einer Zip Datei von einem Server laden Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
V Zuweisen einer InetAddress mit einem byte Netzwerkprogrammierung 5
D Anmelden an einer Windows-Domäne Netzwerkprogrammierung 2
M Suche Klasse um Paramater zu einer URL hinzuzufügen. Netzwerkprogrammierung 3
B Url-Link aus einer E-Mail aufrufen Netzwerkprogrammierung 2
M Quellcode einer HTML Seite erhalten Netzwerkprogrammierung 2
A Abbruch einer Verbindung erkennen? Netzwerkprogrammierung 3
G Performance einer verteilten RMI-Anwendung Netzwerkprogrammierung 4
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
clemson Größe einer Heruntergeladenen Datei Netzwerkprogrammierung 10
O Problem bei Überprüfung und Spliten von einer IP! Netzwerkprogrammierung 2
R Änderung einer Seite (Klasse URL) Netzwerkprogrammierung 2
I IP Adresse des Clients einer Socket Verbindung Netzwerkprogrammierung 2
G Redirects einer HttpURLConnection ermitteln Netzwerkprogrammierung 4
M HTTP URLConnection + BufferedReader killt meine Umlaute Netzwerkprogrammierung 4
U URLConnection mit lg/pw Netzwerkprogrammierung 2
C Java NIO Urlconnection Filetransfer Netzwerkprogrammierung 14
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
nrg HTTP URLConnection immer neu öffnen? Netzwerkprogrammierung 6
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
H URLConnection - Browseranfrage nachbauen Netzwerkprogrammierung 2
A [URLConnection] Bilder hochladen - aber anders! Netzwerkprogrammierung 4
J URLConnection schließen ? Netzwerkprogrammierung 6
D FTP Über URLConnection Netzwerkprogrammierung 7
R URLConnection via Proxy mit Authentification Netzwerkprogrammierung 5
S URLConnection über Proxy Netzwerkprogrammierung 4
D URLConnection + getLastModified Netzwerkprogrammierung 13
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
meez Sockettimeout bei URLConnection Netzwerkprogrammierung 2
H Mail über URLConnection Netzwerkprogrammierung 8

Ähnliche Java Themen


Oben