s and I have to send some requests to the server. I am currently using libcurl.

However there is a limitation when proxy server with authentication is involved 
before the request sent out to the server.

I explored the options in libcurl but i could not able to make it work. If i 
hardcode the username / password it works. But I do not want to get the user 
name and password by my application; I would prefer that libcurl can requests 
these at the start of a transfer.

Is there a different library i can use like winhttp or libcurl is the best one 
to use?

Below are the curl settings done before making the request

curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_URL, urlString.data()); 
curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, 
receiveDataCallback); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_WRITEDATA, &curlPerformStorage); curlResultCode = 
curl_easy_setopt(curlHandle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); 
curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_FOLLOWLOCATION, 1); 
if(NULL != GetWindowsProxyConfig().lpszProxy){ LPWSTR wStr = 
GetWindowsProxyConfig().lpszProxy; char* buffer = new char[100]; 
wcstombs(buffer, wStr, 100) ; curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROXY, "<proxy_name>"); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROXYPORT, <number>); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_HTTPAUTH, CURLAUTH_NONE); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROXYAUTH, CURLAUTH_BASIC); } else { curlResultCode = 
curl_easy_setopt(curlHandle, CURLOPT_PROXY,
 "<proxy_name>"); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROXYPORT, <number>); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_HTTPAUTH, CURLAUTH_NTLM); curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROXYAUTH, CURLAUTH_NTLM); } curlResultCode = 
curl_easy_setopt(curlHandle, CURLOPT_USE_SSL, CURLUSESSL_ALL); curlResultCode = 
curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 1); curlResultCode = 
curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 2); if(proxyStr.length() > 
0){ curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_HTTPPROXYTUNNEL, 1L); 
} curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_FAILONERROR, 1); 
curlResultCode= curl_easy_setopt ( curlHandle, CURLOPT_ERRORBUFFER, errorbuffer 
);

int nConnectionTimeout = curlPerformStorage.GetConnectionTim eOut(); if 
(nConnectionTimeout > 0) { curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_CONNECTTIMEOUT, nConnectionTimeout); } int nTransferTimeout = 
curlPerformStorage.GetTransferTimeO ut(); if (nTransferTimeout > 0) {

curlResultCode=curl_easy_setopt(cur lHandle, CURLOPT_TIMEOUT, 
nTransferTimeout); } curlResultCode = curl_easy_setopt(curlHandle, 
CURLOPT_PROGRESSFUNCTION , ProgressCallback); if (curlResultCode == CURLE_OK) { 
curlResultCode = curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, FALSE); 
curlResultCode= curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA , 
&curlPerformStorage); } curlResultCode = curl_easy_perform(curlHandle); if 
(curlResultCode != CURLE_OK) { } else {

} curl_easy_reset(curlHandle); return curlResultCode;

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to