我正在开发一个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