La recherche de proxy de CFNetwork est une API C utilisable directement depuis C++ ; convertir tout en objets Objective-C est facultatif. Appelez CFNetworkCopyProxiesForURL avec le CFURL cible et les réglages de CFNetworkCopySystemProxySettings pour obtenir des dictionnaires de proxy ordonnés.

ValeurPropriété
Objets créés ou renvoyés par Copy, y compris les routes et les réglagesPossédés par l'appelant ; libérez chaque objet possédé non nul
Dictionnaire issu du tableau ou nom d'hôte issu du dictionnaire via GetEmprunté ; ne le libérez pas sans l'avoir préalablement retenu

Pour des routes valides et un indice dans la plage, l'extraction peut être :

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

Lisez kCFProxyTypeKey avant de traiter l'entrée comme un point de terminaison. Les candidats directs et ceux de configuration automatique demandent un traitement différent.

Convertissez le nom d'hôte CFString et le port CFNumber d'une entrée concrète tant que le propriétaire reste vivant. Les valeurs C++ extraites peuvent ensuite entrer dans la configuration du transport. Pour conserver le CFString lui-même au-delà du résultat, retenez-le d'abord puis équilibrez cela avec CFRelease ; sinon, terminez avant de libérer le propriétaire qui le contient.

Libérez l'URL cible créée/copiée, le dictionnaire de réglages et le tableau de résultats lors du nettoyage, avec un garde de portée si nécessaire. Le seul type CFStringRef d'une variable ne confère pas la propriété d'un résultat de Get.

Articles similaires