2012-04-07 91 views
1

我試圖將數據從iOS應用程序發佈到Node.js/Express。我無法讓它工作;當我嘗試從我的應用程序嘗試時,Node/Express似乎忽略了我的請求。但是,如果我導航到我嘗試在Web瀏覽器中進行POST的同一個URL,則Node/Express會作出響應。Node.js/Express忽略iOS JSON POST

這是我的節點/快遞代碼處理傳入請求:

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

這就是我怎樣,我想POST 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,我的控制檯從節點輸出如下:
handling post!
{}

但是,當我嘗試從我的iOS應用程序發佈信息時,我沒有獲得任何控制檯應用程序 - 就好像Node從未看到傳入的POST請求。更令人困惑的是 - 我無法在iOS應用程序端獲得任何錯誤數據 - 錯誤是nil。任何想法我在這裏做錯了嗎?

回答

4

在快速的路由架構,app.get()響應GET請求,柱子被忽略,可能導致404

可以使用後()或()代替。

我無法對目標C部分發表評論,但我會建議 Nc -l 0.0.0.0 80(或其他端口) o看看發生了什麼。

+0

這是最肯定的,我不能相信我忽略了這一點。不過我不知道'any()' - 謝謝! – 2012-04-07 13:07:49