我正在開發一個iPhone應用程序,並計劃每隔一段時間從應用程序發送一個JSON數據包到本地網絡服務器。爲此,我計劃使用Alamofire。我的POST方法是這樣的:Alamofire http請求本地網絡服務器
Alamofire.request(Alamofire.Method.POST, "http://XXX.XX.X.XX:3000/update", parameters: dictPoints, encoding: .JSON)
.responseJSON {(request, response, JSON, error) in
println(JSON)
}
的IP地址被標記出來,但我確信,這相當於我的本地服務器的IPv4無線地址。服務器設置爲聽端口3000.服務器配置如下所示:
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log("MongoDB connection is open.");
});
// Mongoose Schema definition
var Schema = mongoose.Schema;
var LocationSchema = new Schema({
//some schema here
});
// Mongoose Model definition
var LocationsCollection = mongoose.model('locations', LocationSchema);
// URL management
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.get('/update', function (req, res) {
console.log("Got something from the phone!");
});
// Start the server
var server = app.listen(3000, function() {
var host = server.address().address
var port = server.address().port
console.log('App listening at %s:%s',host, port)
})
因此,該服務器似乎工作正常。我可以在我的瀏覽器中測試它,並鍵入網址:http://127.0.0.1:3000,它會給我index.html文件。如果我輸入http://127.0.0.1:3000/update ...那麼我會得到「從手機裏拿到東西!」信息。但是,當我運行我的應用程序(確保我的手機與服務器位於同一無線網絡中)並且Alamofire方法被調用時...我得到的響應是零。我也看不到「從手機裏拿到東西!」信息。任何人都可以讓我知道爲什麼會發生......或者更好的是,如何解決它?
是的。理想情況下,我會發送適當的響應,以確認該程序包的處理過程是否正確......但是,我不應該看到console.log消息說明它收到了手機中的某些內容嗎?現在,我只是試圖查看我從手機發送的消息是否被手機註冊過(之後我可以解析消息併發回正確的響應)。 – andyopayne 2015-02-05 22:37:29
我將Alamofire函數改爲使用'.responseString'而不是'.responseJSON',並且我得到的消息如下:'Optional(「不能POST/update \ n」)'。當我這樣做時,我也正在使用Charles,而且我沒有看到日誌中顯示任何活動(但是,當我將IP地址輸入到計算機上的webrowser時,我看到了一條記錄)。你知道Alamofire的迴應意味着什麼,或者爲什麼它不會發布到該地址? – andyopayne 2015-02-06 14:50:53
@andyopayne也許它是'app.get'的參考。如果你想處理'/ update'的'POST'請求,它不應該是'app.post'嗎? – Rob 2015-02-06 14:57:36