iOSデバイスでプロキシ情報を取得しようとしています。OS は、設定の辞書を取得する関数 CFNetworkCopySystemProxySettings() を簡単に使用できます。ホストとポートが提供されている場合、問題はありません。それぞれ kCFNetworkProxiesHTTPProxy キーと kCFNetworkProxiesHTTPPort キーを使用して辞書でアクセスできます。ただし、これらが提供されず、代わりに kCFNetworkProxiesProxyAutoConfigURLString キーの URL が提供される場合があります。今、ここで問題が発生しています...
そこで、期待どおりに JavaScript 関数を含むファイルをプルします。
function FindProxyForURL(url,host)
{
if (isInNet(host, "10.xxx.xxx.xxx", "255.255.224.0"))
{
return "DIRECT";
}
if (isInNet(host, "10.xxx.xxx.xxx", "255.255.224.0"))
{
return "DIRECT";
}
return "PROXY host:port";
}
どのすべてが私に似合う..?
次に、関数を呼び出して戻り値を取得しようとしましたが、ここですべてがうまくいきません:(これが私の最近の試みです:
NSString *jsFunction = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // jsFunction is the javascript function above
JSContext *context= [[JSContext alloc] init];
[context evaluateScript:jsFunction];
JSValue *function = context[@"FindProxyForURL"];
JSValue *jsResult = [function callWithArguments:@[[JSValue valueWithObject:[NSString stringWithCppString:host] inContext:context], [JSValue valueWithObject:[NSString stringWithCppString:host] inContext:context]]];
NSString *result = [jsResult toString];
結果は常に未定義として返されます!!
数値をインクリメントするだけの PAC の代わりにいくつかのテスト関数を試してみましたが、それらは期待どおりに機能します。問題は、isInNet への呼び出しを導入したときに始まるようです。誰かに同様の問題がありましたか?isInNet は iOS でサポートされていませんか? 私は明らかに間違ったことをしていますか?
ご協力いただきありがとうございます。