2012-09-25 12 views
7

In meinem Projekt verwende ich libcurl, um Daten über das Internet herunterzuladen. Das Problem ist, dass libcurl die Proxy-Einstellungen der WLAN-Verbindung nicht erkennt.IOS Proxy-Einstellungen

Ich muss manuell die Einstellungen für libcurl einstellen, also frage ich mich, wie kann man die Proxy-Einstellungen einer Wifi-Verbindung bekommen. Ich habe im KeyChain einige Hinweise auf Informationen gefunden, konnte sie aber nicht abrufen.

Wissen Sie, ob es eine Möglichkeit gibt, diese Einstellungen zu erhalten, damit ich sie für libcurl einstellen kann?

Danke!

Antwort

7

Ich habe die Antwort gefunden!

Mit diesem Stück Code scheint zu funktionieren:

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

Ich habe nicht mit einem automatischen Proxy-Konfiguration versuchen, noch nicht, aber ich hoffe, es funktioniert!

1

Es wird IP-Adresse als String geben.

(NSString *)proxyName 
{ 

    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 

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

    return (__bridge NSString *)proxyCFstr; 

}