2014-05-18 2 views
1

JavaScriptCore.framework으로 놀고 싶습니다. http 게시 요청을하려고하는데 응답이 전혀 없습니다.JavaScriptCore에서 iOS 용 http 포스트 응답 받기

내 코드 :

목적 C :

#define UTILITY_PATH  ([[NSBundle mainBundle] pathForResource:@"GeneralUtility" ofType:@"js"]) 
#define WEB_SERVICE_PATH ([[NSBundle mainBundle] pathForResource:@"WebService" ofType:@"js"]) 

- (void)testJavaScript 
{ 
    NSError *error = nil; 
    JSContext *context = [[JSContext alloc] init]; 
    NSString *scriptString = [NSString stringWithContentsOfFile:WEB_SERVICE_PATH encoding:NSUTF8StringEncoding error:nil]; 

    if (error) { 
     NSLog(@"%s, error: %@", __PRETTY_FUNCTION__, error.localizedDescription); 
    } 

    [context evaluateScript:scriptString]; 

    context[@"print"] = ^(NSString *text) { 
     NSLog(@"text: %@", text); 
    }; 

    JSValue *function = context[@"getGoogleLocationResponse"]; 
    [function callWithArguments:@[]]; 
} 

그리고 자바 스크립트 : 나는 약 XLHttpRequest 내가 사파리 브라우저를 지원하지 않는 대해 아무것도 보지 않았다 읽으면서

function getGoogleLocationResponse() 
{ 
    var lat = "31.1", lon = "34.4"; 
    var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lon"+&sensor=false"; 

    var request = new XMLHttpRequest(); 

    request.open("GET", url, false); 
    request.setRequestHeader("Content-Type", "text/plain"); 
    request.send(null); 

    print("response text: "+request.responseText); 
} 

.

어쩌면 내가 뭔가 잘못하고있는 것일까 요?

답변

2

[[JSContext alloc] init]은 독립 실행 형 웹킷 프리 JavaScript 컨텍스트 인스턴스를 만듭니다. 즉, 기본적으로 JavaScript 가상 머신 코어 만 사용할 수 있습니다. DOM이 없거나 setInterval, XMLHttpRequest가 없습니다.

XMLHttpRequest를 사용하려면 사용자 정의 바인딩을 만들거나 UIWebView에서 JSContext 인스턴스를 가져와야합니다. .