2017-09-25 1 views
0

unserem Blog Versuchte Suche war aber einige Hinweise so zu veröffentlichen, zu findenRegd httpclient.executeMethod (request); eine IOException auf dem Server, während läuft auf lokalen Eclipse

ich auf einem httpsClient Post-Methode Code nur funktionierte nicht in der Lage, wie unten und IOException gegenüber. kleine Zeiger können helfen, erfordern keine detaillierten Antworten.

HttpClient httpclient = new HttpClient();   
       request = new PostMethod("https://ref.net/auth/token?grant_type=password");    
       request.setRequestHeader("Authorization", "Basic KolokYrZTo="); 
       request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

      NameValuePair[] data = { 
        new NameValuePair("username", "abc"), 
        new NameValuePair("password", "123"), 
        new NameValuePair("grant_type", "password"), 
      }; 

      request.setRequestBody(data); 
      httpclient.executeMethod(request); 
} catch (IOException e) { 
        e.printStackTrace(); 
        logger.error("IOException in post()...."+e.getMessage());     
       } 

Ich verwende diesen Code auf Eclipse mit commons-Httpclient 3.1.jar es völlig in Ordnung läuft, aber wenn ich meinen Code auf einen Server verschieben und versuchen, den gleichen Code auszuführen, die httpclient.executeMethod(request); throws IOException. Zu meiner Überraschung druckt die e.printStackTrace(); nicht als e Objekt selbst ist null Wie bekomme ich diese Ausnahme und debuggen dies, ich mache etwas falsch hier.

Auf meinem lokalen habe ich Java1.8 aber auf Compiler-Compliance-Ebene 1.6- auf Server ausgeführt. Ich habe versucht, sowohl 1,8 und 1,6 gleichen Fehler auszuführen.

+0

ist es im Zusammenhang mit einigen Zertifikaten, die wir möglicherweise auf dem Server konfigurieren müssen und auf lokaler? Vorhanden sind, ich habe keine Zertifikate hinzugefügt, obwohl –

+0

Wenn 'e' ist wirklich' null' wie Sie sagen, sollte die ganze Sache Anschließend werfen Sie eine "NullPointerException", wenn Sie "e.printStackTrace" tun, so habe ich Zweifel, dass dies tatsächlich der Fall ist. Ich nehme an, dass Sie sich auf das beziehen, was Sie in Ihrem Protokoll sehen. Aber da fügen Sie einfach 'e.getMessage()' hinzu, das null sein könnte. Protokollieren Sie die vollständige Ausnahme (so wird der Typ der ausgelösten Ausnahme und der Stacktrace ebenfalls protokolliert) und fügen Sie sie hier hinzu, damit mehr über Ihr Problem gesagt werden kann. – Lothar

+0

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX-Pfadaufbau fehlgeschlagen: sun.security.provider.certpath.SunCertPathBuilderException: Es konnte kein gültiger Zertifizierungspfad zum angeforderten Ziel unter sun.security.ssl.Alerts gefunden werden .getSSLException (Alerts.java:192) bei sun.security.ssl.SSLSocketImpl.fatal (SSLSocketImpl.java:1937) bei sun.security.ssl.Handshaker.fatalSE (Handshaker.java302) –

Antwort

0

Mit der Fehlermeldung, die Sie als Kommentar hinzugefügt haben, ist klar, was hier passiert. Der Server, zu dem Sie eine Verbindung herstellen, verwendet ein Serverzertifikat, von dem die JVM, die Sie in der Befehlsshell verwenden, nichts weiß.

Wenn Sie nach dieser Fehlermeldung in Kombination mit commons httpclient suchen, finden Sie ein paar Seiten Diskussion, z. eins bei StackOverflow.

Verwandte Themen