2013-05-28 65 views
2

我正在嘗試執行發佈請求,並試圖使用摘要身份驗證。設置所有其他選項(郵局,URL和一切)之前如何使用摘要身份驗證與libcurl發佈http請求

url_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 

curl_easy_setopt(curl_handle, CURLOPT_USERPWD, "user:pdw"); 

:與libcurl,我設置的選項。服務器關閉我的連接,我認爲沒有文摘。我只是不知道如何自動獲得摘要的挑戰 - 響應行爲。如果我設置HTTPAUTHCURLAUTH_BASIC編碼的東西,我看到VERBOSE選項的頭部包含authorization = basic。摘要沒有標題。

你知道我該怎麼做,或者你能給我舉個例子嗎?我真的到處搜索。

回答

2

對於基本POST要求你應該做的:

curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd"); 
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST); 
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST"); 

對於多POST(又名multipart/form-data):

struct curl_httppost *post; 
struct curl_httppost *postend; 
/* setup your POST body with `curl_formadd(&post, &postend, ...)` */ 
curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd"); 
curl_easy_setopt(hnd, CURLOPT_HTTPPOST, post); 
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST); 
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST"); 

人提示:使用curl命令行工具與--libcurl request.c:它將用於執行相應請求的選項列表輸出到此C文件中。

+0

我試過了,但它不能正常工作......我應該收到挑戰,但我沒有收到任何東西,在發送給我的代碼後,我是否必須編寫更多代碼?我必須設置標題或類似的東西嗎? – Gioia

+0

然後你應該有一個服務器端的問題。當然,你必須設置'CURLOPT_URL'選項,否則這就是你所需要的。我確實確認它是有效的(例如,參見這些[真實世界示例](https://github.com/Moodstocks/moodstocks-api/blob/master/moodstocks-api/msapi.c))。我再次建議您在命令行上,在您自己的服務上用'--libcurl out.c'選項執行相同的請求:它會輸出您需要的所有內容。 – deltheil

+0

是啊!現在它工作!這是您建議的服務器問題。我非常感謝你的朋友,祝你有個美好的一天。 – Gioia

相關問題