Java.io.IOException: SSL communication failure: failure in SSL library, usually protocol error

I am trying to download some content using the URL class with the specified link coming from the server.

My download code:

URL url = new URL(downloadUrl); InputStream stream = url.openStream(); byte[] content = new byte[stream.available()]; stream.read(content); stream.close(); 

But at startup, I received the following exception:

  java.io.IOException: SSL handshake failure: Failure in SSL library, usually a protocol error error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:604 0xaf076228:0x00000000) at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native Method) ... 

I used the link:

 https://contentserver.com/d/761/34/215656/5de1a41ea3bc9c81978af95ed19b03286f64d9a3 

I know if I write it to the browser, it will download the file, I want to download the same file through Java.

thanks

+7
source share
3 answers

Code for reading data from https-url in java

 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.net.*; import java.security.Security; import java.util.Properties; public class UseHttps { public static void main(String argv[]) { String fullURL = "https://fortress.wa.gov/lni/bbip/detail.aspx?License=SIBLUCL004C5"; try { URL page = new URL(fullURL); // Process the URL far enough to find the right handler URLConnection urlc = page.openConnection(); urlc.setUseCaches(false); // Don't look at possibly cached data System.out.println("Content-type = " + urlc.getContentType()); // See what here System.out.println("Content-length = " + urlc.getContentLength()); // See how much of it there is // Read it all and print it out BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream())); String buffer = ""; while (buffer != null) { try { System.out.println(buffer); buffer = br.readLine(); } catch (IOException ioe) { ioe.printStackTrace(); break; } } } catch (MalformedURLException mue) { System.out.println(fullURL + " is not a URL that can be resolved"); } catch (IOException ie) { ie.printStackTrace(); } } } 
+1
source

Marcos

this may be completely inappropriate, but ... I was getting the same error ...

 abort: error: _ssl.c:490: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 

... trying to make "hg clone" on my bitbucket.org mercurial repo ..., I tried to connect to bitbucket via https from the windows command line ... it turned out that I was delivering the wrong password to my proxy ...

0
source

While I'm not sure about your SSL error, the way you read the data is most likely NOT what you want. InputStream.available () is not the amount of data in the stream. A stream is, by definition, "unlimited", and it ends only when it is finished. An InputStream does not know how many bytes it has. The available method () simply tells you how many bytes can be read without blocking the IO.

0
source

All Articles