A pesquisa de proxy do CFNetwork é uma API C que pode ser usada diretamente do C++; converter tudo em objetos Objective-C é opcional. Chame CFNetworkCopyProxiesForURL com o CFURL de destino e as configurações de CFNetworkCopySystemProxySettings para obter dicionários de proxy ordenados.

ValorPropriedade
Objetos criados ou retornados por Copy, incluindo rotas e configuraçõesPropriedade do chamador; libere cada objeto próprio diferente de null
Dicionário do array ou nome de host do dicionário via GetEmprestado; não o libere sem tê-lo retido antes

Para routes válidos e um índice dentro do intervalo, a extração pode ser:

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

Leia kCFProxyTypeKey antes de tratar a entrada como um endpoint. Os candidatos diretos e os de configuração automática exigem tratamento diferente.

Converta o nome de host CFString e a porta CFNumber de uma entrada concreta enquanto o proprietário permanece vivo. Os valores C++ extraídos podem então entrar na configuração do transporte. Para reter o próprio CFString além do resultado, retenha-o primeiro e equilibre isso depois com CFRelease; caso contrário, termine antes de liberar o proprietário que o contém.

Libere o URL de destino criado/copiado, o dicionário de configurações e o array de resultados na limpeza, usando um guard de escopo se for o caso. Apenas o tipo CFStringRef de uma variável não concede propriedade sobre um resultado de Get.

Artigos relacionados