2012-09-25 14 views
7

En mi proyecto estoy usando libcurl para descargar datos a través de Internet. El problema es que libcurl no detecta la configuración proxy de la conexión wifi.IOS Get Proxy Settings

Debo establecer manualmente la configuración de libcurl, así que me pregunto cómo se puede obtener la configuración del proxy de una conexión wifi. Encontré algunas pistas sobre la información en KeyChain, pero no pude recuperarlas.

¿Sabes si hay alguna manera de obtener esta configuración para que pueda configurarlas para libcurl?

Gracias!

Respuesta

7

¡He encontrado la respuesta!

El uso de este trozo de código parece funcionar:

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; 
} 

no he tratar con la configuración automática de proxy todavía, pero espero que está funcionando!

1

Dará la dirección IP como Cadena.

(NSString *)proxyName 
{ 

    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 

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

    return (__bridge NSString *)proxyCFstr; 

} 
Cuestiones relacionadas