static Uri GetProxyUri(CFProxy proxy, out NetworkCredential credentials) { string protocol; switch (proxy.ProxyType) { case CFProxyType.FTP: protocol = "ftp://"; break; case CFProxyType.HTTP: case CFProxyType.HTTPS: protocol = "http://"; break; default: credentials = null; return(null); } string username = proxy.Username; string password = proxy.Password; string hostname = proxy.HostName; int port = proxy.Port; string uri; if (username != null) { credentials = new NetworkCredential(username, password); } else { credentials = null; } uri = protocol + hostname + (port != 0 ? ':' + port.ToString() : string.Empty); return(new Uri(uri, UriKind.Absolute)); }