1

我正在尝试将数据从 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 发布到节点的方式:

// 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 应用程序发帖时,我没有得到任何控制台应用程序 - 就好像 Node 从未看到传入的 POST 请求一样。更令人费解的是——我在 iOS 应用程序端无法获得任何错误数据——错误是nil. 有什么想法我在这里做错了吗?

4

1 回答 1

4

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

您可以使用 post() 或 any() 代替。

我无法对目标 C 部分发表评论,但我会建议 Nc -l 0.0.0.0 80 {或其他端口)看看发生了什么。

于 2012-04-07T05:54:41.963 回答