我正在开发一个移动hybrid应用程序在BlueMix上。我刚刚按照说明here添加了必要的工具。IBMCloudCodeHybrid SDK始终会在Android上失败
服务器Node.js的代码(依赖关系和ibmconfig变量的设置是否正确):
app.get(ibmconfig.getContextRoot() + '/hello', function(req,res){
res.send('World');
});
混合移动应用代码:
var setup = {
applicationId:'<applicationId>',
applicationRoute:'<applicationRoute>',
applicationSecret:'<applicationSecret>'
};
IBMBluemix.initialize(setup).then(function(config){
return IBMCloudCode.initializeService();
}).then(function(cloudcode){
cloudcode.get("/hello").then(function(data){
alert(data);
}, function(err){
alert("[ERROR] " + err);
});
});
对不起,删除所有没有必要的东西。我的问题是,这个代码实际上在iOS设备上工作,而不是在Android上。对于iOS的含义我收到了World
提醒,但对于Android,我收到了[ERROR] "{\"code\":200,\"data\":\"World\"}"
提醒。无论我尝试做什么(例如设置内容类型标题),我总是会去on失效功能Android设备。
我发现了什么是Android上的服务器响应被理解为一个字符串,而不是一个JSON,所以我改变了IBMCloudCodeHybrid.js:线687,每当收到一个字符串添加
if (response.constructor === 'abc'.constructor) {
response = JSON.parse(response);
}
if (_.has(response, "code") && _.has(response, "data") && response.code === 200) {
response = response.data;
} else {
defer.reject(response);
}
使,它将被转换为JSON。
这对我很有用。
所以我的问题是,我必须为了使它在Android上工作吗?或者是否有适当的方法来做到这一点/我做错了什么? 或者Bluemix SDK有问题?