CFNetwork-proxyresultaten rechtstreeks in C++ lezen
Gebruik Apple's C-proxy-opzoek-API's vanuit C++ en houd geleende woordenboekwaarden in leven zonder ze als eigen objecten vrij te geven.
Het proxy-opzoeken van CFNetwork is een C-API die rechtstreeks vanuit C++ te gebruiken is; alles naar Objective-C-objecten omzetten is optioneel. Roep CFNetworkCopyProxiesForURL aan met de doel-CFURL en instellingen uit CFNetworkCopySystemProxySettings om geordende proxywoordenboeken te krijgen.
| Waarde | Eigendom |
|---|---|
| Objecten die Copy maakt of retourneert, inclusief routes en instellingen | Eigendom van de aanroeper; geef elk eigen object dat niet null is vrij |
| Woordenboek uit de array of hostnaam uit het woordenboek via Get | Geleend; geef het niet vrij zonder het eerst te hebben behouden |
Voor geldige routes en een index binnen bereik kan het uitlezen er zo uitzien:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Lees kCFProxyTypeKey voordat u de vermelding als eindpunt behandelt. Directe en automatisch geconfigureerde kandidaten vereisen een andere behandeling.
Converteer de CFString-hostnaam en CFNumber-poort van een concrete vermelding terwijl de eigenaar in leven blijft. De uitgelezen C++-waarden kunnen daarna in de configuratie van het transport terechtkomen. Om de CFString zelf na het resultaat te behouden, moet u die eerst behouden en dat later met CFRelease in evenwicht brengen; rond anders af voordat u de eigenaar die het bevat vrijgeeft.
Geef bij het opruimen de gemaakte/gekopieerde doel-URL, het instellingenwoordenboek en de resultatenarray vrij, met een scope guard waar dat past. Alleen het CFStringRef-type van een variabele geeft geen eigendom over een Get-resultaat.