Node.js / Express忽略iOS JSON POST

我试图从一个iOS应用程序的数据发布到Node.js / Express。 我无法得到它的工作; Node / Express似乎忽略了我的请求,当我尝试从我的应用程序。 但是,如果我导航到我想要在Web浏览器中发布的同一个URL,则Node / Express将作出响应。

这是处理传入请求的Node / Express代码:

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(); }); 

这就是我试图将JSON发布到Node:

 // 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); } 

正如我前面提到的,如果我在浏览器中导航到http://www.mysite.com/test,Node的控制台输出如下:
handling post!
{}

但是,当我尝试从我的iOS应用程序发布,我没有得到控制台应用程序 – 这几乎就像节点从来没有看到传入的POST请求。 而更令人困惑的是 – 我无法在iOS应用程序端获得任何错误数据 – 错误是nil 。 任何想法我在这里做错了吗?

在Express的路由框架中,app.get() 响应GET请求,POST被忽略,可能会导致404。

您可以使用post()或任何()来代替。

我不能评论客观的C部分,但我会build议Nc -l 0.0.0.0 80(或另一个端口)o看看发生了什么事情。