Ler os resultados de proxy de CFNetwork directamente en C++
Use as API C de busca de proxy de Apple desde C++ e manteña vivos os valores de dicionario prestados sen liberelos como obxectos propios.
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.
| Valor | Propiedade |
|---|---|
| Obxectos creados ou devoltos por Copy, incluíndo rutas e axustes | Propiedade do chamador; libere cada obxecto propio distinto de null |
| Dicionario da matriz ou nome de host do dicionario mediante Get | Prestado; 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.