2012-04-07 3 views
1

Ich versuche, Daten von einer iOS App an Node.js/Express zu senden. Ich kann es nicht zur Arbeit bringen; Node/Express scheint meine Anfrage nur zu ignorieren, wenn ich es von meiner App aus versuche. Wenn ich jedoch zu der gleichen URL navigiere, die ich in einem Web-Browser senden möchte, antwortet Node/Express.Node.js/Express ignoriert iOS JSON POST

Das ist mein Knoten/Express-Code ist, das die eingehende Anforderung verarbeitet:

var express = require('express'); 

var app = express.createServer(); 
app.configure(function(){ 
    app.use(express.bodyParser()); 
}); 

app.get('/', function(req, res) { 
     res.write('nothing to see here...'); 
     res.end(); 
}); 

app.get('/test', function(req, res) { 
     console.log('handling post!'); 
     console.log(JSON.stringify(req.body)); 
     res.end(); 
}); 

Und das ist, wie ich POST JSON bin versucht zu Knoten: früher

// Create request data. 
NSString* jsonData = @"{\"test\" : \"someMoreTest\"}"; 
NSData* requestData = [jsonData dataUsingEncoding:NSUTF8StringEncoding]; 

// Create URL to POST jsonData to. 
NSString* urlString = @"http://www.mysite.com/test"; 
NSURL* url = [NSURL URLWithString:urlString]; 

// Create request. 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody: requestData]; 

// Send request synchronously. 
NSURLResponse* response = [[NSURLResponse alloc] init]; 
NSError* error = nil; 
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

// Check result.  
if (error != nil) 
{ 
    NSLog(@"submitted request!"); 
} 
else { 
    NSString* errorLogFormat = @"request failed, error: %@"; 
    NSLog(errorLogFormat, error);   
} 

Wie ich bereits erwähnt, wenn ich http://www.mysite.com/test in meinem Browser, meine Konsole Ausgabe von Knoten navigieren ist die folgende:
handling post!
{}

Wenn ich jedoch versuche, aus meiner iOS-App zu posten, bekomme ich keine Konsolen-App - es ist fast so, als würde Node die eingehende POST-Anfrage nie sehen. Und noch verwirrender - ich kann keine Fehlerdaten auf der Seite der iOS-App erhalten - der Fehler ist nil. Irgendwelche Ideen, was ich hier falsch mache?

Antwort

4

Expressgut der Routing-Rahmen, app.get() nur reagiert Anfragen zu bekommen, werden POSTs ignoriert und führen wahrscheinlich in einem 404.

können Sie Post() oder jede() statt.

Ich kann den objektiven C-Anteil nicht kommentieren, aber ich werde vorschlagen Nc -l 0.0.0.0 80 {oder ein anderer Port) o sehen, was vor sich geht.

+0

Das war es sicherlich, ich kann nicht glauben, dass ich das übersehen habe. Ich wusste nichts über 'any()', obwohl - danke! –