Pour être en mesure de récupérer la valeur retournée par votre programme C++, vous devez d'abord récupérer le résultat renvoyé de NodeJS.
En supposant que vous utilisez ExpressJS
comme serveur HTTP, vous devez implémenter votre point final avec quelque chose comme:
var execFile = require('child_process').execFile;
var express = require('express');
var app = express();
app.post('/endpoint', function (req, res) {
const child = execFile('my_exe', (error, stdout, stderr) => {
if (error) {
res.status(500).send('False')
} else {
if (stdout === 'True') {
res.status(200).send('True')
} else {
res.status(500).send('False')
}
}
});
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
Si l'appel a réussi, le serveur répondra True
avec le statut 200 et si elle échoue, elle renverra False
avec le statut False
.
Maintenant, dans votre appel au serveur de l'application iOS, vous pouvez utiliser Alamofire comme:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:@"someURL" parameters:@{} error:nil];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
/* Network error*/
NSLog(@"Error: %@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
switch (httpResponse.statusCode) {
case 200:
NSLog(@"Success")
/* Code in case of success == Server returned True */
default:
/* Code in case of no success == Server returned False */
NSLog(@"Error");
}
}
}];
[dataTask resume];
requêtes HTTP ont des réponses. Que pensez-vous qu'ils sont pour si ce n'est pas? – OrangeDog