[Java 1.5; Eclipse Galileo]HttpsURLConnection stallo quando getInputStream() è chiamato
HttpsURLConnection sembra arrestarsi quando viene chiamato il metodo getInputStream(). Ho provato a utilizzare diversi siti web senza alcun risultato (attualmente https://www.google.com). Devo sottolineare che sto usando http S.
Il codice seguente è stato modificato in base a ciò che ho appreso da altre risposte StackOverflow. Tuttavia, nessuna soluzione che ho provato finora ha funzionato.
Sarei molto grato per una gomitata nella giusta direzione :)
public static void request(URL url, String query)
{
try{
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
//connection.setReadTimeout(5000); //<-- uncommenting this line at least allows a timeout error to be thrown
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
System.setProperty("http.keepAlive", "false");
connection.setRequestMethod("POST");
// setting headers
connection.setRequestProperty("Content-length",String.valueOf (query.length()));
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); //WAS application/x-www- form-urlencoded
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
System.out.println("THIS line stalls" + connection.getInputStream());
////////////////////////////////////////////////////////////////////////////////////
}catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
errori tipici assomigliano:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:782)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:739)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:681)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:626)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:983)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
at https_understanding.HTTPSRequest.request(HTTPSRequest.java:60)
at https_understanding.Main.main(Main.java:17)
Solo un salto nel buio, si invia una richiesta POST, quindi presumo che l'altra estremità (google) è in attesa per l'invio di alcuni parametri. Tutto quello che stai inviando sono alcune intestazioni HTTP. Cosa succede quando cambi POST in GET? – beny23
Cosa stai/davvero/cercando di fare? Il tuo tag Gmail mi porta a sospettare che potresti stare meglio con POP, IMAP o SMTP (o con una delle API personalizzate di Google) –