Търсенето на прокси в CFNetwork е C API, което може да се използва директно от C++; превръщането на всичко в Objective-C обекти е по избор. Извикайте CFNetworkCopyProxiesForURL с целевия CFURL и настройки от CFNetworkCopySystemProxySettings, за да получите подредени речници на прокси.

СтойностСобственост
Обекти, създадени или върнати от Copy, включително маршрути и настройкиСобственост на извикващия; освободете всеки собствен обект, различен от null
Речник от масива или име на хост от речника чрез GetЗаето; не освобождавайте, без да сте го задържали

За валидни routes и индекс в обхвата извличането може да бъде:

CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
    CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
    CFDictionaryGetValue(proxy, kCFProxyHostNameKey));

Прочетете kCFProxyTypeKey, преди да третирате записа като крайна точка. Директните кандидати и кандидатите от автоматична конфигурация изискват различно третиране.

Преобразувайте CFString името на хоста и CFNumber порта на конкретен запис, докато собственикът е жив. Извлечените C++ стойности могат след това да влязат в конфигурацията на транспорта. За да задържите самия CFString след резултата, първо го задръжте и после балансирайте това с CFRelease; в противен случай приключете, преди да освободите съдържащия го собственик.

При почистване освободете създадения/копирания целеви URL, речника с настройки и масива с резултати, като използвате защита на обхвата, ако е подходящо. Само типът CFStringRef на дадена променлива не дава собственост върху резултат от Get.

Подобни статии