2013-04-30 99 views
1

我最近在Python中編寫了一個程序(Windows 64位v3.3.1),並試圖將它移植到D.我碰到的問題是我利用了urllib模塊在Python中,特別是urllib.request.Requesturllib.request.urlopen,並且我還沒有能夠在D中找到等價物。將Python移植到D:urllib

D是否具有用於類似目的的庫?如果不是,我該如何去實現相同的功能? (我所需要做的就是下載一個.csv文件,然後將其解析爲一個字典數組。)

編輯:我最初試圖Idan的建議導入std.net.curl,但我遇到了問題。起初,我有一個鏈接libcurl的問題,但後來我設法將它構建並放在我的lib文件夾中,從而消除了該錯誤。然後,我得到了一些.dll錯誤,並且在將合適的.dll文件放在什麼(我認爲)是合適的目錄後,仍然出現錯誤:「EVP_md2過程條目無法位於動態鏈接庫C中:\ WINDOWS \ SYSTEM32 \ libssl32.dll「。請注意,libss3l2.dll是我必須下載的.dll文件之一。此外,所有這些錯誤(除了`libcurl'鏈接錯誤)在運行時發生,一旦程序啓動,所以它確實設法實際構建得很好。

+0

你可以手動設置最簡約的http請求,並強制響應編碼到你可以處理的東西 – 2013-04-30 13:31:50

回答

1

您需要使用std.net.curl - http://dlang.org/phobos/std_net_curl.html

請注意,你需要爲了使用它鏈接到libcurl。您可以從http://curl.haxx.se/download.html下載 - 找「的Win32 - 通用」

+0

我試過這個。起初我有一個'libcurl'的問題,但是後來我設法將它構建並放在我的'lib'文件夾中,從而擺脫了那個錯誤。然後,我得到了一些.dll錯誤,並且在將合適的.dll文件放在什麼(我認爲)是合適的目錄後,仍然出現錯誤:「EVP_md2過程條目無法位於動態鏈接庫C中:\ WINDOWS \ SYSTEM32 \ libss32.dll「。請注意,'libss32.dll'是我必須下載的.dll文件之一。 – 2013-04-30 14:20:22

+0

我想我會將這些額外的信息添加到原始問題中,以便更容易找到。 – 2013-04-30 14:21:00

+0

我設法只用'libcurl.dll'在我的工作Windows盒子上運行它。把它放在你項目的目錄中,並通過'pragma(lib,「curl」)鏈接它;' – 2013-04-30 14:40:08

2

好了,所以我不知道我做錯了什麼開始,但我結束了刪除curl.lib我周圍產生的第一時間和libssl32.dll所有副本。我隨時隨地下載了libcurl的副本,可以獲得here。 (我忘了是什麼版本我下載的是第一次,但我想我的問題可能只是我身邊得到錯誤的版本第一次的結果。)

然後,我建`curl.lib」使用

libimp.exe /s curl.lib libcurl.dll 

libimp是用於D的實用程序,可以找到here。),並將curl.lib代入DMD\windows\lib\

最後,我複製了libccurl下載根目錄下的所有.dll文件,並將它們放入了我正在嘗試構建的可執行文件的文件夾中。然後我再次構建了這個項目,它運行得很好。

+1

謝謝!這個答案非常有幫助 – 2013-11-03 22:51:46