2009-06-25 10 views
0

Ich verwende folgenden Code, um Antwortcode von https basierten URLs abzurufen, aber wenn ich ein Prog starte, hängt es nur cont.Wie Antwort von Https URLs lesen?

Code:

import java.net.; 
import javax.net.ssl.; 
import java.io.*; 

class Https2 
{ 
    public static void main(String args[]) throws Exception 
    { 
     URL u = new URL("https://myurl"); 
     HttpsURLConnection hc = (HttpsURLConnection)u.openConnection(); 
     hc.setConnectTimeout(3000); 
     hc.setReadTimeout(5000); 
     System.out.println("Response Code: " + hc.getResponseCode()); 
     hc.disconnect(); 
    } 
} 

Wie können erfolgreiche Verbindung zu HTTPS-URLs machen?

jede Hilfe oder Ideen werden gut geschätzt.

Dank

Antwort

0

habe ich versucht, die beigefügte Probe mit https://mail.google.com/mail/, und es funktionierte einwandfrei auf Linux und Mac OS X.

+0

Aber dieselbe URL und mit demselben Code funktioniert hier nicht (winxp sp2). Was könnte Grund dafür sein? Gibt es irgendein Problem im Quellcode oder irgendein anderes Problem? hast du eine Idee? – Matrix

0

https://mail.google.com/mail/ Arbeiten auf meiner Windows-XP-Box. Vielleicht enthalten Ihre Windows-Firewall-Einstellungen nicht die Datei java.exe als Ausnahme? Oder die Site, zu der Sie eine Verbindung herstellen möchten, verwendet die HTTP-Basisauthentifizierung über die HTTPS-Verbindung. Oder die Website benötigt Sie, um sich mit einem Zertifikat zu identifizieren, wie von anderen vorgeschlagen?

Bearbeiten: Versuchen Sie Ihren Code ohne die Timeout-Parameter. HTTPS-Verbindung und Handshake sind normalerweise langsamer als ein normaler HTTP-Aufruf. Ihre Verbindung könnte eine Zeitüberschreitung haben, bevor sie die angeforderten Daten lesen kann.

I Ding hc.setConnectionTimeout() möglicherweise nicht einmal funktionieren, denn wenn Sie an diesem Punkt haben Sie bereits eine funktionierende Verbindung nach der javadoc.

1

Ich weiß nicht, ob es hilft, aber ich hatte nie viel Freude mit den JDK HTTP-Klassen und habe in der Regel mit der Jakarta Common HTTP Client API (http://hc.apache.org/httpclient-3.x/) beendet.

+0

+1 für HTTPClient – akarnokd

0

Die Authentifizierung des Servers ist standardmäßig erforderlich. Sie müssen die Systemeigenschaft javax.net.ssl.trustStore als den Namen eines Schlüsselspeichers festlegen, der das Zertifikat des Servers enthält.

BTW, ist es eine gute Idee, die Ausnahmen zu fangen und zu drucken, um Diagnosen zu helfen.

Verwandte Themen