使用CFNetwork设置代理在模拟器中工作,而不在设备上

时间:2014-06-26 22:43:45

标签: iphone xamarin.ios xamarin cfnetwork

我使用以下Xamarin.iOS代码来设置代理。

var configuration = NSUrlSessionConfiguration.DefaultSessionConfiguration;
System.IntPtr myHandle = Dlfcn.dlopen("/CFNetwork.framework/CFNetwork", 0);
var keyHost = Dlfcn.GetStringConstant(myHandle, "kCFStreamPropertyHTTPProxyHost");
var keyPort = Dlfcn.GetStringConstant(myHandle, "kCFStreamPropertyHTTPProxyPort");
Dlfcn.dlclose(myHandle);
NSDictionary proxyDict = new NSDictionary(keyHost, "<my-host-value>", keyPort, "<my-port-value>");
configuration.ConnectionProxyDictionary = proxyDict;

它适用于模拟器但不适用于设备(​​iPhone和iPad)。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

经过长时间的研究,我认为我找到了解决方案。 动态库的路径(Dlfcn.dlopen中的第一个参数)应为:

  

“/系统/库/框架/ CFNetwork.framework / CFNetwork的”

或者您可以使用类常量:

  

Constants.CFNetworkLibrary