La ricerca proxy di CFNetwork è un'API C utilizzabile direttamente da C++; convertire tutto in oggetti Objective-C è facoltativo. Chiamate CFNetworkCopyProxiesForURL con il CFURL di destinazione e le impostazioni di CFNetworkCopySystemProxySettings per ottenere dizionari proxy ordinati.

ValoreProprietà
Oggetti creati o restituiti da Copy, comprese rotte e impostazioniDi proprietà del chiamante; rilasciate ogni oggetto posseduto diverso da null
Dizionario dall'array o nome host dal dizionario tramite GetPreso in prestito; non rilasciatelo senza averlo prima trattenuto

Per routes validi e un indice nell'intervallo, l'estrazione può essere:

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

Leggete kCFProxyTypeKey prima di trattare la voce come endpoint. I candidati diretti e quelli a configurazione automatica richiedono una gestione diversa.

Convertite il nome host CFString e la porta CFNumber di una voce concreta finché il proprietario resta vivo. I valori C++ estratti possono poi entrare nella configurazione del trasporto. Per conservare il CFString stesso oltre il risultato, trattenetelo prima e bilanciate poi con CFRelease; altrimenti terminate prima di rilasciare il proprietario che lo contiene.

Al momento della pulizia rilasciate l'URL di destinazione creato/copiato, il dizionario delle impostazioni e l'array dei risultati, usando un guard di ambito se opportuno. Il solo tipo CFStringRef di una variabile non conferisce la proprietà di un risultato di Get.

Articoli correlati