Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Calling curl from within Matlab

Asked by Jonas Carlson on 28 Sep 2012

I have a number of datafiles to be processed. They should be sent to a server, processed, with the results being further processed in Matlab.

I am using curl to communicate with the server using: reply = evalc('!curl https://... -H ... -d ...') and I get the result: curl: (1) Protocol https not supported or disabled in libcurl

I am using Matlab R2012a running under Linux (Fedora 17). When I try the exact same command in a terminal window, it works just fine. Also, this exact program worked before I upgraded Matlab from a previous version (2010).

As I need to use the -H and -d switches of curl I (think) I cannot use "urlread".

What is the difference between using curl in a terminal and invoking it via "!" or "system" from Matlab?

/Jonas Carlson

2 Comments

Scott on 4 Jan 2013

I've got the exact same problem on the exact same OS. I haven't fixed it yet but I can see there is a libcurl.so in /usr/local/MATLAB/R2012a/bin/glnxa64/ directory which is in LD_LIBRARY_PATH before the libcurl in /usr/lib64. This could have something to do with it.

Jonathan on 6 Jul 2013

I have the same problem. Has anyone found a fix? Thanks.

Jonas Carlson

Tags

Products

No products are associated with this question.

3 Answers

Answer by Christopher on 5 Jan 2013

Can't you just use a system call?

[A,cURL_out] = system('curl http://www.google.com')

1 Comment

Walter Roberson on 5 Jan 2013

That would do the same thing as evalc('!curl...')

Christopher
Answer by Pär Halje on 5 Sep 2013

Hi

Apparently the version of libcurl that is bundled with Matlab does not support https. I found a somewhat cumbersome solution here:

http://benheavner.com/systemsbio/index.php?title=Matlab_git#Getting_Git_to_work_in_MATLAB_.28on_Mac.29

This solution is written for Mac so you need to get your libcurl library from somewhere else than MacPort...

Or maybe libcurl is updated in a newer matlab version?

Pär

0 Comments

Pär Halje
Answer by M. A. Hopcroft on 17 Sep 2013

I had the same issue with Linux (Ubuntu) and R2012a, and solved it by changing the libcurl link in the MATLAB application libraries to point to the system libcurl.

The MATLAB application directory looks like this after installation:

/usr/local/MATLAB/R2012a/bin/glnxa64$ ll libcur*
  lrwxrwxrwx 1 root root     16 2012-06-18 18:12 libcurl.so.4 -> libcurl.so.4.2.0*
  -r-xr-xr-x 1 root root 320452 2011-12-29 00:33 libcurl.so.4.2.0*

The link in the system library directory is pointing to libcurl.so.4.1.1, which was built with https support:

/usr/lib$ ll libcurl*
lrwxrwxrwx 1 root root     19 2013-07-12 14:22 libcurl-gnutls.so.3 -> libcurl-gnutls.so.4
lrwxrwxrwx 1 root root     23 2013-07-12 14:22 libcurl-gnutls.so.4 -> libcurl-gnutls.so.4.1.1
-rw-r--r-- 1 root root 274368 2013-06-27 12:32 libcurl-gnutls.so.4.1.1
lrwxrwxrwx 1 root root     12 2013-07-12 14:22 libcurl.so.3 -> libcurl.so.4
lrwxrwxrwx 1 root root     16 2013-07-12 14:22 libcurl.so.4 -> libcurl.so.4.1.1
-rw-r--r-- 1 root root 295360 2013-06-27 12:32 libcurl.so.4.1.1

So I changed the softlink:

/usr/local/MATLAB/R2012a/bin/glnxa64$ sudo ln -s /usr/lib/libcurl.so.4.1.1 libcurl.so.4

This fixed the problem for me and has not caused any unintended consequences in MATLAB (so far).

>> system('curl -V')
curl 7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

0 Comments

M. A. Hopcroft

Contact us