Wenn ich ein HTTP java.net.URL
erstellen und dann openConnection()
darauf aufrufen, impliziert dies notwendigerweise, dass ein HTTP-Post passieren wird? Ich weiß, dass openStream()
ein GET impliziert. Wenn ja, wie führst du eines der anderen HTTP-Verben aus, ohne mit der Raw-Socket-Ebene arbeiten zu müssen?Bedeutet neue URL (...). OpenConnection() notwendigerweise einen POST?
Antwort
Wenn Sie das Objekt URLConnection
mithilfe von openConnection()
abrufen, wird die Kommunikation mit dem Server nicht gestartet. Das passiert erst, wenn Sie den Stream von URLConnection()
bekommen. Wenn Sie die Verbindung zum ersten Mal erhalten, können Sie Header und andere Verbindungseigenschaften hinzufügen/ändern, bevor Sie sie tatsächlich öffnen.
Der Lebenszyklus von URLConnection ist ein bisschen seltsam. Es sendet die Header nicht an den Server, bis Sie einen der Streams erhalten haben. Wenn Sie nur den Input-Stream bekommen, dann glaube ich, dass es ein GET, sendet die Header, dann können Sie die Ausgabe lesen. Wenn Sie den Ausgabestream erhalten, glaube ich, dass es als POST gesendet wird, da davon ausgegangen wird, dass Sie Daten darauf schreiben werden (Sie müssen möglicherweise setDoOutput(true)
aufrufen, damit der Ausgabestream funktioniert). Sobald Sie den Eingabestream erhalten, wird der Ausgabestream geschlossen und auf die Antwort vom Server gewartet.
Zum Beispiel soll dies eine POST tun:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();
InputStream is = conn.getInputStream();
// read stuff here
Während dies eine GET tun würde:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
// read stuff here
URLConnection
auch tun andere seltsame Dinge. Wenn der Server eine Inhaltslänge angibt, behält URLConnection
den zugrunde liegenden Eingabestream so lange offen, bis er so viele Daten empfängt, auch wenn Sie ihn explizit schließen(). Das hat uns viele Probleme bereitet, da es unseren Client ein wenig hart heruntergefahren hat, da die URLConnection
die Netzwerkverbindung offen halten würde. Dies ist wahrscheinlich wahrscheinlich, auch wenn Sie nur getStream()
verwenden.
Nein, tut es nicht. Aber wenn das Protokoll der URL HTTP ist, erhalten Sie eine HttpURLConnection
als Rückgabeobjekt. Diese Klasse verfügt über eine setRequestMethod
-Methode, um anzugeben, welche HTTP-Methode Sie verwenden möchten.
Wenn Sie anspruchsvollere Sachen machen möchten, sind Sie wahrscheinlich besser dran mit einer Bibliothek wie Jakarta HttpClient.
- 1. Namevaluepair für openconnection veraltet
- 2. was bedeutet neue statische?
- 3. POST an passwortgeschützte URL?
- 4. Android Twilio was bedeutet "einen HTTP-POST zu Ihrer Nachrichtenliste Ressourcen-URI" bedeuten?
- 5. Stream-Post-URL-Sicherheitsoption
- 6. Was bedeutet "Jenkins URL" in den Konfigurationseinstellungen?
- 7. Was bedeutet/#!/In der URL?
- 8. Re-write alte URL neue URL Asp.Net
- 9. S3-Post-URL mit Abfrageparametern für einen mobilen Client abrufen
- 10. AngularJS - Daten an eine neue URL senden
- 11. PHP-Post über URL-Parameter
- 12. Browserinhalt durch neue URL ersetzen
- 13. FadeIn neue URL mit Jquery
- 14. die URL POST-Parameter Erkennung
- 15. URL-Kürzung mit POST-Daten
- 16. form post zu mod_rewrite url
- 17. PHP Bildanzeige mit POST URL
- 18. Was bedeutet Hintergrund: transparente URL(); machen?
- 19. Muss eine InverseRelationShadowVariable notwendigerweise zu einer planningEntity gehören?
- 20. eröffnen neue TCPDF nach Form Post
- 21. AngularFire, wenn nur neue Post angekommen ist
- 22. Ajax POST-Anfrage an die neue Google Analytics V4-API
- 23. Was die URL in XML-Datei bedeutet
- 24. Was bedeutet "git +" in der URL?
- 25. was bedeutet der Stern einer URL
- 26. Laravel Aktuelle URL-Parameter erhalten und neue URL anfordern
- 27. POST: Senden einer Post-Anfrage in einer URL selbst
- 28. Restful Post mit zusätzlichen URL-Parametern?
- 29. Java Sun/Oracle Bug-Datenbank: neue URL?
- 30. Neue Firebase: Dynamische Änderung der Datenbank-URL