I'm accessing an internal database using MATLAB's urlread
command, everything was working fine until the service was moved to a secure server (i.e. with an HTTPS address rather than an HTTP address). Now urlread
no longer successfully retrieves results. It gives an error:
Error downloading URL. Your network connection may be down or your proxy settings improperly configured.
I believe the problem is that the service is using an invalid digital certificate since if I try to access the resource directly in a web browser I get "untrusted connection" warning which I am able to pass through by adding the site to an Exception list. urlread
doesn't have an obvious way of handling this problem.
Under the hood urlread
is using Java to access web resources, and the error is thrown at this line:
inputStream = urlConnection.getInputStream;
where urlConnection
is a Java object: sun.net.www.protocol.https.HttpsURLConnectionImpl
.
Anyone suggest a workaround for this problem?
Consider the following Java class. Borrowing from this code: Disabling Certificate Validation in an HTTPS Connection
C:\MATLAB\MyJavaClasses\com\stackoverflow\Downloader.java
MATLAB
First we compile the Java class (we must use a JDK version compatible with MATLAB):
Next we instantiate and use it MATLAB as:
Here are a few URLs with bad SSL certificates to test:
UPDATE: I should mention that starting with R2014b, MATLAB has a new function
webread
that supersedesurlread
.