meine Versuche einen String an ein PHP Script zu übergeben, schlagen fehl.
obwohl das Script(die URL) erreichbar ist, bekomme ich bei der Instanziierung des OutputStremWriter eine Fehler (Connection timed out: connect).
selbst wenn ich Deinen Code 1:1 übernehme, bekomme ich den gleichen Fehler …
an meinem E-Mail Account kann ich jedoch erkennen, dass Deine Lösung stimmt.
Ich vermute mal, dass es sich um “offene Ports” handelt.
Hier ist nur der port 80 offen…
Port 80 ist Standardmäßig offen (ausgehend, nicht eingehend), sonst könntest du keine Internetseiten aufrufen.
Wenn doch der gleiche “Fehler” kommt, was steht denn da in der Konsole?
Da muss ein komplettes Stacktrace stehen wenn du meins übernommen hast und nicht was du da unsinnigerweise mit “getMessage()” ausgibst.
Überall wo ein try/catch ist, mach ein e.printStackTrace(); rein, damit du den Fehler besser verfolgen kannst.´
Edit:
Hab ich an einer stelle z.B. ausversehen vergessen:
} catch (MalformedURLException e) {
e.printStackTrace(); // <<<<<<<< Hier ist es drin
return String.format("Fehler aufgetreten: %s", e.getMessage());
} catch (IOException e) {
// <<<<<<<< Hier aber NICHT
return String.format("Fehler aufgetreten: %s", e.getMessage());
}
[OT][QUOTE=Bizarrus]Port 80 ist Standardmäßig offen (ausgehend, nicht eingehend), sonst könntest du keine Internetseiten aufrufen.[/QUOTE]
Hm? Hab ich was verpasst? Das war noch nie so und ist es meines Wissens nach auch noch immer nicht …
[/OT]
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at Testpack.Senden.HTTPPost(Senden.java:58)
at Testpack.Senden.(Senden.java:34)
at Testpack.Senden.main(Senden.java:22)
Hm? Hab ich was verpasst? Das war noch nie so und ist es meines Wissens nach auch noch immer nicht …
Würdest du dann in irgendeiner Form eine Internetseite besuchen können? Definitiv nicht.
Wenn du www.test.de im Browser aufrufst weist du ja schon, dass der Browser dies Standardmäßig als www.test.de:80 intepretiert? Der Standardport 80 ist nun mal für HTTP gesetzt.
Und wenn der Port dicht ist, oder in irgendeiner Form geblockt wird, funzt es nicht.
Ich gehe da von einem Firmenpc mit paranoidem Admin aus…
Möglich. Oder Eltern die über den Router Seiten sperren, andernfalls auch der Server selber der Ihn als Clienten blockt (Stichwort ist hier iptables im bezug auf fail2ban oder wie auch immer).
Und die Exception sagt aus:
Connection timed out: connect
Dass ein Timeout stattgefunden hat - Der Host hat in dem Zeitraum sich nicht gerührt.
Denn ich bekomme von meiner Seite aus eine Verbindung. Bei mir funktioniert auch die zuletzt gepostete Source.
das Runtime muss dem Standardproxy zugewiesen bekommen…
Aber auch nur wenn du da irgendwelche Blockaden drin hast.
Oder du hast in den Java-Einstellungen selber einen Proxy gesetzt der aber derzeit nicht erreichbar ist (?)
[QUOTE=Bizarrus]Würdest du dann in irgendeiner Form eine Internetseite besuchen können? Definitiv nicht.
Wenn du www.test.de im Browser aufrufst weist du ja schon, dass der Browser dies Standardmäßig als www.test.de:80 intepretiert? Der Standardport 80 ist nun mal für HTTP gesetzt.
Und wenn der Port dicht ist, oder in irgendeiner Form geblockt wird, funzt es nicht.[/QUOTE]
Genau das meinte ich, das ist Quatsch … Du verwechselst hier etwas oder hast keine Ahnung von Netzwerkkommunikation. Natürlich könnte ich und auch jeder andere auf die Webseite gehen, wenn der Port 80 gesperrt ist, das ist nämlich vollkommen egal. Dass der Server auf Port 80 lauscht, heißt nicht, dass der Client den Port 80 benötigt. Der Port 80 und auch jeder andere Port für einen Dienst ist nur für die aller erste Anfrage in Richtung Server von Bedeutung, damit man eine erste Anlaufstelle hat, darum wurden diverse Dienste mit bestimmten Ports standartisiert (auch bekannt als well known ports). Welchen Port der Client für den Netzwerkaufbau verwendet bzw. vom OS zugewiesen bekommen hat, weißt du nicht, es ist ein völlig willkürlicher nicht belegter Port und es ist, das kann ich dir versichern, niemals der Port 80! Und auch der Server kommuniziert nach dem Verbindungsaufbau ebenfalls über einen völlig anderen Port als 80, um diesen wieder freizugeben für neue Clients, die versuchen eine Verbindung aufzubauen.
Von Clientseite gibt es nur eine Möglichkeit, wie man den Port 80 “dicht” machen könnte, nämlich eine Firewall welcher Art auch immer, die aber alle Anfragen, die der Client raushaut und welche als Ziel den Port 80 haben, rausfiltert und verwirft. Somit kommen die Anfragen nie raus. Der Client verwendet aber nie den Port 80, sondern wie schon gesagt, einen x-beliebigen und das ist der Firewall total egal. Und selbst wenn die Firewall rausgehende Pakete mit dem Zielport 80 verwirft, das heißt noch nicht, dass der Clientport 80 zu ist. Und umgekehrt eben genauso. Wenn die Firewall eingehende Pakete mit dem Zielport 80 verwirft, heißt das noch nicht, dass ausgehende Pakete mit dem Zielport 80 auch geblockt werden, ebenso für den Quellport 80. Aber wie gesagt, die Ports 0-1023 werden sowieso nie als Quellport vergeben, von daher ist das an der Stelle auch total irrelevant und ob diese geblockt werden/gesperrt sind ebenso wenig.
Akeshihiro, sonst immer sehr ausführliche verständliche und richtige Posts, die ich sehr gerne lese. Aber das stimmt nicht. Die Kommunikation bleibt auf dem Port 80 des Servers. Ein Wechsel wird nicht vollzogen und ist auch nicht nötig. Denn es muss nichts freigegeben werden. Auch weitere Vergindungsversuche können auf dem Port 80 vom Server entgegen genommen werden.