2012-09-25 36 views
7

Trong dự án của tôi, tôi đang sử dụng libcurl để tải xuống dữ liệu qua internet. Vấn đề là libcurl không phát hiện các thiết lập proxy của kết nối wifi.IOS Nhận Cài đặt Proxy

Tôi phải đặt thủ công cài đặt cho libcurl vì vậy tôi tự hỏi làm cách nào để có được cài đặt proxy của kết nối wifi. Tôi tìm thấy một số manh mối về thông tin trong KeyChain nhưng tôi không thể lấy chúng.

Bạn có biết có cách nào để nhận cài đặt này để tôi có thể đặt chúng cho libcurl không?

Cảm ơn!

Trả lời

7

Tôi đã tìm thấy câu trả lời!

Sử dụng chút mã này dường như làm việc:

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

Tôi chưa thử với cấu hình proxy tự động được nêu ra nhưng tôi hy vọng nó làm việc!

1

Nó sẽ cung cấp địa chỉ IP dưới dạng Chuỗi.

(NSString *)proxyName 
{ 

    CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 

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

    return (__bridge NSString *)proxyCFstr; 

} 
Các vấn đề liên quan