La búsqueda de proxy de CFNetwork es una API C que se puede usar directamente desde C++; convertir todo en objetos Objective-C es opcional. Llame a CFNetworkCopyProxiesForURL con el CFURL de destino y los ajustes de CFNetworkCopySystemProxySettings para obtener diccionarios de proxy ordenados.

ValorPropiedad
Objetos creados o devueltos por Copy, incluidas rutas y ajustesPropiedad del llamador; libere cada objeto propio distinto de null
Diccionario del arreglo o nombre de host del diccionario mediante GetPrestado; no lo libere sin haberlo retenido

Para routes válidos y un índice dentro del rango, la extracción puede ser:

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

Lea kCFProxyTypeKey antes de tratar la entrada como un extremo. Los candidatos directos y los de configuración automática requieren un tratamiento distinto.

Convierta el nombre de host CFString y el puerto CFNumber de una entrada concreta mientras el propietario siga vivo. Los valores C++ extraídos pueden pasar después a la configuración del transporte. Para conservar el propio CFString más allá del resultado, reténgalo primero y compense después con CFRelease; de lo contrario, termine antes de liberar el propietario que lo contiene.

Libere la URL de destino creada/copiada, el diccionario de ajustes y el arreglo de resultados al limpiar, usando un guard de ámbito si procede. El tipo CFStringRef de una variable por sí solo no otorga propiedad sobre un resultado de Get.

Artículos relacionados