2012-09-25 16 views
7

Nel mio progetto utilizzo libcurl per scaricare dati su Internet. Il problema è che libcurl non rileva le impostazioni proxy della connessione wifi.IOS Ottieni impostazioni proxy

Devo impostare manualmente le impostazioni per libcurl, quindi mi chiedo come sia possibile ottenere le impostazioni proxy di una connessione wifi. Ho trovato alcuni indizi sulle informazioni nel KeyChain ma non sono riuscito a recuperarli.

Sai se esiste un modo per ottenere queste impostazioni così posso impostarle per libcurl?

Grazie!

risposta

7

Ho trovato la risposta!

Utilizzando questo pezzo di codice sembra funzionare:

std::string getProxyName() 
{ 
    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 
    const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesHTTPProxy); 
    char buffer[4096]; 
    memset(buffer, 0, 4096); 
    if (CFStringGetCString(proxyCFstr, buffer, 4096, kCFStringEncodingUTF8)) 
    { 
     return std::string(buffer); 
    } 
    return ""; 
} 


int CDownloadThread::getProxyPort() 
{ 
    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 
    const CFNumberRef portCFnum = (const CFNumberRef)CFDictionaryGetValue(dicRef, (const void*)kCFNetworkProxiesHTTPPort); 

    SInt32 port; 
    if (CFNumberGetValue(portCFnum, kCFNumberSInt32Type, &port)) 
    { 
     return port; 
    } 
    return -1; 
} 

non ho provate con configurazione automatica del proxy ancora, ma spero che sia di lavoro!

1

Fornirà l'indirizzo IP come stringa.

(NSString *)proxyName 
{ 

    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 

    const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef, 
            (const void*)kCFNetworkProxiesHTTPProxy); 

    return (__bridge NSString *)proxyCFstr; 

}