http(s) Verbindung

Generic1

Top Contributor
Hallo,

ich steh gerade auf dem Schlauch, vielleicht könnt ihr mir da auf die Sprünge helfen, Ich habe eine ganz normale Web- Anwendung programmiert, mit einem Servlet auf der Server- Seite, zu welchem vom Browser eine http(s) verbindung hergestellt wird, also ganz normaler Aufbau,

jetzt möchte ich hergehen und meine Webanwendung auf 2 Tomcat- Servern laufen lassen, und für eine Webanwendung möchte ich ein Modul programmieren, welches mir eine http(s) Verbindung zur anderen Webanwendung erstellt, so wie wenn sich ein Browser zur WebApplikation1 verbinden würde,

Mir ist jetzt nicht ganz klar, wie ich eine http(s) Verbindung einfach erstellen kann, sodass Webanwendung1 nicht merkt, ob jetzt eine andere Webapplikation dranhängt oder ob es ein Browser ist.

Hat damit jemand Erfahrung und könnte mir tipps dazu geben.

Besten Dank,
 

Generic1

Top Contributor
Kann sein, muss mal richtig drüberschaun, ob das unterstützt wird, was ich benötige, aber besten Dank mal dafür.
d.h. aber auch, dass es mit Bordmitteln von JSE oder JEE nicht möglich ist, sowas zu machen,
Lieg ich da richtig?
 
M

maki

Gast
Soweit ich weiss gibt es in der Java API keinen http Client, man kann sich aber seinen eigenen bauen, oder eben einen nehmen der schon fertig ist ;)
 

Generic1

Top Contributor
Hallo,

also ich verwende jetzt mal httpclient, eine http- Verbindung hab ich schon, das war ein Kinderspiel aber jetzt wollte ich eine https Verbindung zu einem Server herstellen mit folgendem Code von HttpClient - HttpClient SSL Guide, (siehe unten).

Ich finde aber leider nicht, in welchem jar sich die Klasse GetMethod und HttpClient verstecken. Ich hab mir folgendes runtergeladen:
HttpComponents - HttpComponents Downloads -> Binary with dependencies, da find ich die Klassen aber nicht.
Weiß jemand, welche jars ich da einbinden muss?

lg


Java:
HttpClient httpclient = new HttpClient();
        GetMethod httpget = new GetMethod("https://www.verisign.com/");
        try {
            httpclient.executeMethod(httpget);
            System.out.println(httpget.getStatusLine());
            }
        finally {
            httpget.releaseConnection();
            }
 

Generic1

Top Contributor
Ich habs leider noch nicht ganz hinbekommen, ich hab vor längerer Zeit für meine Web- Applickation ein Certificat erstellt mit keytool, der Browser hat dann beim ersten Verbindungsversuch gefragt, ob man dem Certificat vertraut, wenn man OK geklickt hat, hat der Browser das Certifikat gespeichert und alles war damit geritzt mit der https- Verbindung.

Meine JavaSE- Anwendung zum Verbinden über https mit der Web- Anwendung schaut momentan so aus wie unten und ich bekomme folgende Fehlermeldung:

Code:
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
...

d.h. also das in dem unteren Code die Angabe des Certifikates fehlt, kennt sich jemand aus, wie ich dem HttpClient das Certifikat mitteile?

Vielen Dank,


Java:
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;

public class HttpsConnection {

    public HttpsConnection() throws IOException {
        HttpClient httpclient = new HttpClient();
        GetMethod httpget = new GetMethod("https://localhost:8443/NameMeinerWebanwendung");
        try {
            httpclient.executeMethod(httpget);
            System.out.println(httpget.getStatusLine());
            }
        finally {
            httpget.releaseConnection();
            }
        }

    public static void main(String[] args) throws Exception {
        new HttpsConnection();
        }
}
 

FArt

Top Contributor
Ähnlich wie ein Browser besitzt eine VM einen Truststore mit trusted authorities. Man kann aber auch einen eigenen verwenden.

Einfache Möglichkeiten:
- das Zertifikat ist echt (z.B. von Thawtee), dann kann die Zertifizierungskette ohne zutun überprüft werden
- das Zertifikat ist selbst signiert und wird den Default-Truststore importiert (uncool)
- du baust einen eigenen Truststore mit dem selbst signierten Zertifikat und konfigurierst die VM entsprechend (Installing and Configuring SSL Support
- du machst das über die API selber, kannst so theoretisch mehrere Truststores verwenden (das ist aufwendiger)

Aber hier die eigentliche Frage:
jetzt möchte ich hergehen und meine Webanwendung auf 2 Tomcat- Servern laufen lassen, und für eine Webanwendung möchte ich ein Modul programmieren, welches mir eine http(s) Verbindung zur anderen Webanwendung erstellt, so wie wenn sich ein Browser zur WebApplikation1 verbinden würde,
Wieso? Was soll das werden? Geht das, was du eigentlich erreichen möchtest nicht einfacher? Meine Vermutung: ja!
 

Generic1

Top Contributor
>> Wieso? Was soll das werden? Geht das, was du eigentlich erreichen möchtest nicht einfacher? Meine
>> Vermutung: ja!

Das hab ich mir nicht ausgedacht und ist deshalb nicht mein Bier.


Hab die Lösung schon gefunden, deshalb als erledigt makiert:
Java:
final ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory();
            final Protocol https = new Protocol(PROTOCOL, socketFactory, PORT);
            Protocol.registerProtocol(PROTOCOL, https);

lg
 

Generic1

Top Contributor
Ich weiß, hab ich auch gelesen, funktioniert erstmal und das ist mir das wichtigstem, handelt sich nämlich um ein Testsystem, da ist es ok,
lg
 

Generic1

Top Contributor
Eine andere Frage noch, ich hab mich jetzt mit dem oberen Code einloggen können und bekomme die Startseite der Web- Anwendung als html- Code zurück, dass funkt. also mal,

Jetzt möchte/muss ich noch eine AJAX Kommunikation simulieren,
Ich weiß zwar wie ich AJAX mit JavaScript einsetze (XMLHttpRequest), kann ich das aber auch in einer JavaSE Application irgenwie nachbilden? Gibts da vielleicht auch wieder eine jar, welche das AJAX- Protokoll unterstützt?

Beste Grüße,
 
Zuletzt bearbeitet:

Generic1

Top Contributor
ganz einfach gesagt will ich einen Browser- Client mit JavaSE nachbilden, damit der Server nicht merkt ob ein JavaSE- Programm oder ein Browser am Servlet hängt und dazu brauche ich die http und die AJAX- Funktionen.

PS: ist nicht meine Idee!!
 

Generic1

Top Contributor
Mit dem javax.script (Java Platform SE 6)
habt ihr noch nicht gearbeitet?
ich versuch gerade mit dieser Bibliothek eine AJAX Kommunikation zum laufen zu bringen, dass javax.script.* bei den Bordmitteln von JavaSE dabei ist.
Wär super wenn damit schon mal jemand Erfahrungen gemacht hätte ob das überhaupt funktioniert -> AJAX mit dieser Bibliothek.
 

Generic1

Top Contributor
Also ich hab mir jetzt mal http angesehen, komm aber nicht drauf wie ich da eine AJAX- Anfrage an den Server senden soll,
Hat da jemand eine Idee?
lg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B HTTP-Header-Inspektor-Servlet Allgemeines EE 1
W JSF Validator Problem HTTP Status 500 Allgemeines EE 2
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
M HTTP-Adresse im Browser bei JSF verzögert Allgemeines EE 3
M HTTP Authentifizierung weiter geben Allgemeines EE 4
G Http request bekommen parsen und response senden Allgemeines EE 1
C HTTP Link übergeben Allgemeines EE 2
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
E HTTP-GET// -->Eine URL aufrufen, aber nicht dahin navigie Allgemeines EE 2
I <%@ taglib uri="[url]http://java.sun.com/jsf/html"[/url] p Allgemeines EE 6
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
S Verständnisproblem: WebSphere und HTTP Server Allgemeines EE 2
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
G Firefox Plugin für HTTP (req&resp) visualisierung? Allgemeines EE 2
C http post Allgemeines EE 4
L JavaEE Webanwendung - Datenbank-Verbindung aufbauen Allgemeines EE 18
Java.getSkill() verbindung / connection in session speichern Allgemeines EE 4
MQue CMS in Verbindung mit Java Allgemeines EE 16
MQue TCP- Verbindung nach Tomcat- Start (global) starten Allgemeines EE 4
G Verbindung zu Tomcat Allgemeines EE 15
N erstes Java EE Projekt - Server/ EJB-Verbindung-Anfängerfage Allgemeines EE 17
zilti Verbindung Applet <-> Servlet Allgemeines EE 5
G Fehlermeldungen bei Verbindung zur DB Allgemeines EE 14
K JSP für DB-Verbindung Allgemeines EE 4
P keine verbindung vom struts framework zu mysql Allgemeines EE 2
G "Access denied" bei Verbindung zu MySQL mittles JS Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben