我在couchdb服务器上使用nodejs服务器注册用户。用于注册的nodejs服务器couchdb用户
这个想法是,我的android应用程序向nodejs服务器发送一个ajax注册请求。 nodejs服务器将该请求转发给couchdb服务器,然后将couchdb服务器响应转发给android应用程序。
是服务器的NodeJS的代码:
var dispatcher = require('httpdispatcher');
var request = require('request-json');
dispatcher.onOptions("/_users", function(req, res){
res.writeHead(204, {'Access-Control-Allow-Origin':req.headers.origin,
'Access-Control-Allow-Methods': 'GET, PUT, POST, HEAD, DELETE',
'Access-Control-Allow-Headers': 'authorization, x-titanium-id, content-type',
'Access-Control-Allow-Credentials': 'true'
});
res.end();
});
dispatcher.onPost("/_users", function(appReq, appRes) {
var client = request.newClient('http://localhost:5984/');
client.setBasicAuth('admin', 'adminPassword');
var data = JSON.parse(appReq.body);
client.post('_users', data, function(err, res, body) {
var appResHeader = res.headers;
appResHeader['Access-Control-Allow-Origin'] = appReq.headers.origin;
appResHeader['Access-Control-Allow-Methods'] = 'GET, PUT, POST, HEAD, DELETE';
appResHeader['Access-Control-Allow-Headers'] = 'authorization, x-titanium-id, content-type';
appResHeader['Access-Control-Allow-Credentials'] = 'true';
console.log(JSON.stringify(body));
appRes.writeHead(res.statusCode, appResHeader);
appRes.write(JSON.stringify(body));
appRes.end();
});
});
dispatcher.onError(function(req, res) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Page Not Found\n');
});
,一切顺利,但Android应用程序接收不包含JSON数据的响应。请注意, console.log(JSON.stringify(body));
打印正确的JSON数据:
{"error":"conflict","reason":"Document update conflict."}
任何想法?
2013-12-16
Morris
+0
客户收到的答案包含哪些内容?你说这不是JSON数据,但它是什么? –