2012-08-27 43 views
0

目前我的Qt移植代碼C.移植Qt代碼到C(POST使用的libcurl)

Qt代碼:

QNetworkAccessManager *manager = new QNetworkAccessManager; 
QByteArray data; 
QNetworkRequest request; 

mainReply = manager->post(request, data); //What is the equivalent in libcurl? 
connect(mainReply, SIGNAL(finished()), this, SLOT(get_imghttpFinished())); 

我想將同樣的代碼到C使用的libcurl。 任何人都可以爲「manager-> post」提供等效函數嗎?

+0

我假設'** mainReply = manager-> post(request,data); **'是爲了強調那一行?不要在你的代碼中這樣做。可能之後發表評論。但粗體行不通,只會造成混淆。 – Bart

+0

是的,這是強調該行。 – Raja

+0

我已將它編輯爲評論。 '** mainReply'表示完全不同的東西。 – Bart

回答

1

在該行中,QNetworkAccessManager執行簡單的POST請求。根據捲曲的文檔,你可以做這樣的事情來取代這個代碼:

char *data="name=daniel&project=curl"; 
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data); 
curl_easy_setopt(easyhandle, CURLOPT_URL, "http://posthere.com/"); 
curl_easy_perform(easyhandle); 

這些鏈接可以幫助你,有一個捲曲的C語言綁定(參見第一個鏈接章HTTP發佈)的文檔和C.做POST請求的捲曲

http://curl.haxx.se/libcurl/c/libcurl-tutorial.html

http://curl.haxx.se/libcurl/c/postit2.html

希望的一例這有助於:)

編輯:它似乎可以發送一個文件與curl_formaddfunction,而不必閱讀它以前。

curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture", CURLFORM_FILE, "my-face.jpg", CURLFORM_END); 
+0

在沒有編碼的情況下可以發送二進制數據(圖像數據)嗎? – Raja

+0

我認爲是的,解決方案將取決於您用來閱讀圖像的內容。 – Uflex

+0

圖像數據應使用以下函數傳輸: curl_easy_setopt(curl,CURLOPT_POSTFIELDS,fdata); curl_easy_setopt(curl,CURLOPT_POSTFIELDSIZE,size); – Raja