A busca de proxy de CFNetwork é unha API C que se pode usar directamente desde C++; converter todo en obxectos Objective-C é opcional. Chame CFNetworkCopyProxiesForURL co CFURL de destino e os axustes de CFNetworkCopySystemProxySettings para obter dicionarios de proxy ordenados.

ValorPropiedade
Obxectos creados ou devoltos por Copy, incluíndo rutas e axustesPropiedade do chamador; libere cada obxecto propio distinto de null
Dicionario da matriz ou nome de host do dicionario mediante GetPrestado; non o libere sen o reter antes

Para routes válidos e un índice dentro do rango, a extracción pode ser:

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

Lea kCFProxyTypeKey antes de tratar a entrada como un punto final. Os candidatos directos e os de configuración automática requiren un tratamento distinto.

Converta o nome de host CFString e o porto CFNumber dunha entrada concreta mentres o propietario siga vivo. Os valores C++ extraídos poden entrar despois na configuración do transporte. Para conservar o propio CFString máis aló do resultado, retéñao primeiro e compense despois con CFRelease; se non, remate antes de liberar o propietario que o contén.

Libere o URL de destino creado/copiado, o dicionario de axustes e a matriz de resultados ao limpar, usando un guard de ámbito se procede. O tipo CFStringRef dunha variable por si só non outorga propiedade sobre un resultado de Get.

Artigos relacionados