2014-09-03 2 views
0

그래서 iOS 기기에서 프록시 정보를 가져 오려고합니다. OS는 설정의 사전을 얻기 위해 CFNetworkCopySystemProxySettings() 함수를 사용합니다. 호스트와 포트가 제공되면 아무런 문제가 없습니다. 사전에 kCFNetworkProxiesHTTPProxy 및 kCFNetworkProxiesHTTPPort 키를 사용하여 액세스 할 수 있습니다. 그러나 때때로 이러한 옵션이 제공되지 않고 대신 kCFNetworkProxiesProxyAutoConfigURLString 키에 대한 URL이 제공됩니다. 나는이 문제를 얻고 경우 지금은 ... iOS에서 PAC 파일을 구문 분석하는 방법

그래서 내가 예상대로 자바 스크립트 함수가 포함 된 파일, 당기 : 모두가 나에게 좋아 보인다

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? 분명히 잘못된 것을하고 있습니까?

어떤 도움을 주셔서 감사합니다!

답변

1

isInNet (또는 사용 가능한 다른 PAC 기능)이 정의되어 있지 않습니다. 표준 자바 스크립트 함수는 아닙니다. CFNetworkCopyProxiesForAutoConfigurationScript처럼 좀 더 똑 바른 것을 시도해 봤니?