[Java 1.5; Eclipse Galileo]当调用getInputStream()时,HttpsURLConnection停止运作
当调用getInputStream()方法时,HttpsURLConnection似乎失速。我试过使用不同的网站无济于事(目前https://www.google.com)。我应该指出我正在使用http S。
下面的代码已根据我从其他StackOverflow答案中学到的内容进行了修改。然而,迄今为止我尝试过的解决方案并没有奏效。
我是一个微调的方向是正确:)
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();
}
典型错误看起来非常感谢:
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)
在黑暗中只是一个尝试,您要发送POST请求,所以我会假设,另一端(谷歌)正等着你发送一些参数。你发送的只是一些HTTP头文件。当您将POST更改为GET时会发生什么? – beny23 2010-02-17 03:39:34
你/你真的/想要做什么?你的gmail标签会让我怀疑你用POP,IMAP或SMTP(或Google的其中一个自定义API)可能会更好。 – 2010-02-17 03:44:26