我们在Openshift RHC v2上运行Node JS-Express应用程序,每当用户请求OTP时,都会向第三方SMS网关服务器调用api。为此,我们添加了一个简单的$ http调用,它将通过消息触发上述号码的短信。
请求看起来像这样:
$http.get("http://example.com/?user=userid:password&number=9876543210&message='Hi your OTP is 18276'")
.success(function(error, response){
if (!error && response.statusCode == 200) {
console.log('STATUS: ' + response.statusCode)
console.log('HEADERS: ' + JSON.stringify(response.headers));
} else {
console.log('STATUS : '+ error.statusCode);
console.log(error);
}
});
一旦RHC服务器开始运行,它就会起作用。经过几天天或有时几个小时后,我们发现此API始终未被调用。我们在请求之前和之后添加了控制台日志,但从未调用过API。令人非常惊讶和震惊的是它如何不执行这个请求(这个工作几天然后完全失效)。
这可能是什么问题?将重新分享我们所拥有的:
console.log("Generated OTP : " + otp); // ... Where OTP is what we have generated... Console 1
var number = 9876543210;
var message = 'Hi your OTP is : '+otp;
console.log('Number : ' + number + ', Message : ' + message); // ... Console 2
$http.get("http://example.com/?user=userid:password&number="+number+"&message="+message)
.success(function(error, response){
if (!error && response.statusCode == 200) {
console.log('STATUS: ' + response.statusCode) ... Console 3
console.log('HEADERS: ' + JSON.stringify(response.headers)); // ... Console 4
} else {
console.log('STATUS : '+ error.statusCode); // ... Console 5
console.log(error); // ... Console 6
}
});
console.log("callback - Post - /sellers/phone/:number/:email"); // ...Console 7
res.json({"otp":otp});
当它关闭时,可以看到控制台1,2和7,但不能看到3,4或5和6。
我们可以在Openshift或Node应用程序上调试吗?
如果我使用rhc app-restart <app>
重新启动服务器,则会看到其他控制台,我们会收到短信/消息。
请帮忙。如需更多信息,请告知我们。 谢谢。
编辑:我也尝试过如下使用请求:
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('STATUS: ' + response.statusCode);
console.log('HEADERS: ' + JSON.stringify(response.headers));
} else {
console.log('STATUS : ' + error.statusCode);
console.log(error);
}
});
答案 0 :(得分:0)
自AngularJS v1.6起,.success()
上的.error()
和promises
方法被删除。
而是使用.then()
方法。 成功,错误和标题的所有数据都将移至.then(response)
响应数据。
<强>所以:强>
response.config, // Contains an object of configurations, like `Method`, `params`, `URL`
response.data, // Contains the data the request returned
response.status, // Contains the status code, Eg 200 which is success
response.statusText, // Text of the status, Eg. Ok on success or Error on error
因此,请检查$http
方法是否成功:
$http.get("http://example.com/?user=userid:password&number="+number+"&message="+message)
// Use .then instead of .success
.then(function (response) {
if(response.status === 200) {
// Successfull
} else {
// Error occurred
}
});
只是想知道为什么要删除它们。看看这个主题:
Why are angular $http success/error methods deprecated? Removed from v1.6?