Четене на прокси резултатите на CFNetwork директно в C++
Използвайте C API за търсене на прокси на Apple от C++ и поддържайте заетите стойности на речниците живи, без да ги освобождавате като собствени обекти.
Търсенето на прокси в 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.