HTTP URLConnection immer neu öffnen?

nrg

Top Contributor
hallo zusammen,

kurze frage und vermutlich auch schnell beantwortet: wenn ich einen http-wrapper schreibe, der nichts weiter macht, als ein oder mehrere posts an den server zu senden, sollte ich dann die connection/streams bei jedem post neu aufbauen? (also halte ich quasi als member nur die url und öffne bei jedem request eine neue urlconnection - gerade beim schreiben bezweifle ich auch irgendwie, dass es anders überhaupt funktioniert 😉)

danke und grüße
 
Zuletzt bearbeitet:
Nein, das solltest Du alles über eine Connection machen. Dein Browser mach ja auch nicht für jeden neuen Post ins Java-forum eine neue Connection auf. Auf dem Stream rufst Du nach dem Ende Deiner Daten flush auf, das sorgt dafür, dass alles abgesendet wird und er für die nächsten Daten bereit ist. Ansonsten würd ich das garnicht selbst programmieren, sondern Bibilotheken dafür benutzen (httpClient von Apache bspw.).
 
jo, httpclient habe ich mir auch schon überlegt. das halte ich nur für die anforderung deutlich zu hoch gegriffen (das bisschen hat man schnell selbst implementiert).
meinst du also, dass ich einmalig (im kontruktor oder in einer methode à la connect) die urlconnection und die streams öffne und dann immer darüber arbeite? ohne es jetzt getestet zu haben aber ist es nicht so, dass ich den inputstream erst nach dem request holen kann?
 
Wenn man sich die Beispiele im Internet so anschaut, könnte man meinen, dass Du Recht hast. Gib mir 'n Moment. Ich probier's grad mal aus und meld mich wieder...
 
ok, danke. außerdem schließt sich ja auch die urlconnection implizit mit dem schließen der streams. ich könnte höchstens die urlconnection und den outputstream zuvor offen aber aufgrund dieser verbindungen habe ich eben die vermutung, dass eine connection, ein in- und ein outputstream in einem context zueinander stehen und es eben garnicht anders geht.
ich dachte, dass jemand vielleicht eine "best practice" für mich parat hat 🙂
 
Ich habe mich geirrt. Wenn man einmal eine HttoURLConnection mit allem gewünschtem initialisiert und connected hat, kann man daran nichts mehr verändern. Nach einem disconnect kann man zwar wieder Sachen verändern, aber nach einem erneuten Connect krieg ich eine Exception, wenn ich mir den InputStream holen will. Ich habe das mit der Arbeit mit Sockets verwechselt.😳
 
Ergänzend dazu: Request Cycle ? Wikipedia
Das bringt das HTTP-Protokoll so mit sich. Es basiert auf Request-Response-Zyklen. Nach jedem Zyklus wird die Verbindung durch den Server getrennt. Während ein Response unendlich sein darf (z.B. Radio-Stream o.ä.) darf dies ein Request nicht, weil der Response erst erfolgen kann, nachdem der Request (bzw. der Request-Header) vollständig gelesen wurde.
 

Zurück
Oben