あなたのC++プログラムから返された値を取得できるようにするには、NodeJSから返された結果を取得する最初の必要があります。
あなたのHTTPサーバとしてExpressJS
を使用している、あなたのようなものを使用してエンドポイントを実装する必要がありますと仮定すると:それは、呼び出しが成功した場合、サーバは状態200でTrue
を応答しますし、それが失敗した場合
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!');
});
ステータスがFalse
のFalse
が返されます。
さて、iOSアプリケーションからサーバーへの呼び出しで、あなたは次のようにAlamofireを使用することができます。
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];
HTTP要求は応答を有します。あなたは彼らがそうではないと思いますか? – OrangeDog