2014-10-07 39 views
4

當我使用安裝在Cygwin的倍頻3.8.1,我可以成功地下載https網頁是這樣的:urlread(),urlwrite()用於HTTPS頁面中八度不工作的Windows

urlwrite('https://www.google.com', 'downloaded.html') 

然而,當我用八度3.6.4安裝在Windows 7 SP1專業版64位,urlwrite()不工作:

octave-3.6.4.exe:18> urlwrite('https://www.google.com', 'downloaded.html') 
error: urlwrite: curl: Problem with the SSL CA cert (path? access rights?) 

urlread()有同樣的問題。 有沒有避免這個錯誤的好方法?

更新:

繼安迪的建議,我試圖修復捲曲相關的問題。目前,curl.exe可以用於https,但libcurl(我認爲嵌入八度)不適用於https。讓我解釋我做了什麼。

我從here下載了curl.exe。起初,它不會爲HTTPS這樣的工作:

C:\somewhere\curl-7.33.0-win64-nossl>curl https://www.google.com/ 
curl: (1) Protocol https not supported or disabled in libcurl 

我下載後「cacert.pem」從here,改名爲「捲曲-CA-bundle.crt」,並把它放在C: \ windows \ system32,curl.exe可以從https站點中提取頁面。

但是,當我在Octave中使用urlwrite()時,它仍然不起作用。我想這個八度內部調用libcurl API,但我不知道如何強制libcurl找到CA證書。

+0

你爲什麼要安裝3.6.4和哪個版本?MinGW。MS Visualc,Cygwin?對於Windows 7 64bit,我會建議從http://mxeoctave.osuv.de/下載一個非官方的MXE。 – Andy 2014-10-08 12:14:47

+0

我在http:// sourceforge中點擊了一個鏈接「Octave 3.6.4 for Windows Microsoft Visual Studio」 .net/projects/octave/files/Octave%20Windows%20binaries /我覺得3.6.4是Windows的最新正式版本 – user64953 2014-10-08 14:02:58

+0

我試用了官方的MXE build 3.8.2-3 portable,但是我得到了相同的結果。 – user64953 2014-10-08 15:35:01

回答

2

我在Windows的Octave 4.0.0中使用urlread()的方法相同。我嘗試了幾件事,但都沒有奏效。我確實設法讓curl命令行工具工作。那麼,到底對我來說最簡單的辦法是用八度的系統,寫我自己的urlread(),它被稱爲捲曲()函數:

function retval=my_urlread(url) command=['curl --silent ','"',url,'"']; [output,text]=system(command); retval=text; endfunction

+1

你可以在你的代碼中加入描述嗎?它會改善你的答案。 – 2015-06-26 05:23:26

1

我分析了捲曲的源代碼,可以說:你不能解決這個問題沒有源代碼編輯CURL有兩個入口點:如果您運行curl.exe,它會使用工作目錄中的環境變量和文件來設置libcurl,並且如果您通過libcurl.dll(如Octave)的curl_easy_perform使用libcurl,則必須手動提供所有設置。所以你可以這樣設置你的環境,即從Octave的二進制目錄下的curl.exe將會加載沒有附加參數的數據(curl.exe https://google.com),但Octave的urlread將不起作用。