HTTP Request through JavaScriptCore in iOS7

httprequest, ios, javascriptcore, objective-c

Solution

My guess would be that HTTP Requests are not part of JavaScript Core, as it's really part of the browser, not the JavaScript Language. I would assume that JavaScript core only includes what's in the ECMAScript definition.

If you want AJAX, then the WebView is the way to go.

Problem

I am trying to use one of iOS7 new features, the JavaScriptCore Framework. I can successfully output a helloWorld string from Javascript, but what I'm interested in, is doing HTTP POSTs in Javascript and then pass the response to Objective-C. Unfortunately, when I'm creating an `XMLHttpRequest` object in Javascript, I get `EXC_BAD_ACCESS (code=1, address=....)`. Here is the Javascript code (`hello.js`): ``` var sendSamplePost = function () { // when the following line is commented, everything works, // if not, I get EXC_BAD_ACCESS (code=1, address=....) var xmlHttp = new XMLHttpRequest(); }; var sayHello = function (name) { return "Hello " + name + " from Javascript"; }; ``` Here is the Objective-C code inside my `ViewController`: ``` - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. JSContext *context = [[JSContext alloc] initWithVirtualMachine:[[JSVirtualMachine alloc] init]]; NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"js"]; NSLog(@"scriptPath: %@", scriptPath); NSString *script = [NSString stringWithContentsOfFile:scriptPath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"script: %@", script); [context evaluateScript:script]; JSValue *sayHelloFunction = context[@"sayHello"]; JSValue *returnedValue = [sayHelloFunction callWithArguments:@[@"iOS"]]; // this works! self.label.text = [returnedValue toString]; JSValue *sendSamplePostFunction = context[@"sendSamplePost"]; // this doesn't work :( [sendSamplePostFunction callWithArguments:@[]]; } ``` Could it be that HTTP Requests functionality is not provided in JavaScriptCore Framework? If yes, could I overcome this by using `UIWebView`'s `-stringByEvaluatingJavaScriptFromString:`? What if I compiled and included in my project another Javascript Engine (e.g. V8)?

Original source

Related problems