c++ - NodeJS/iOS - 如何在使用 HTTP POST 调用后从二进制文件中获取返回值

标签 c++ ios node.js afnetworking

我有一个 iOS 应用程序 (Objective C),这个应用程序使用 NodeJs 调用一些 C++ 二进制文件。

到目前为止,我已经能够使用 AFNetworking 3 库使用 HTTP POST 从我的应用程序上单击的按钮远程执行我的 C++ 程序。

iOS App --> 点击按钮 --> HTTP POST --> Node JS 调用 --> C++ 程序调用(后者返回 true 或 false)

现在,我想获取程序返回的值(True 或 False)。我该怎么做?

我已经使用 GET 方法在我的服务器上获取文件,但我不知道在这种情况下使用它是否合适,即获取我的程序的返回结果。

你知道我怎样才能做到这一点吗?

感谢

最佳答案

为了能够检索 C++ 程序返回的值,您首先需要从 NodeJS 检索返回的结果。

假设你使用 ExpressJS 作为你的 HTTP 服务器,你应该用类似的东西来实现你的端点:

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!');
});

如果调用成功,服务器将响应 True 状态 200,如果失败,它将返回 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];

关于c++ - NodeJS/iOS - 如何在使用 HTTP POST 调用后从二进制文件中获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763694/

相关文章:

c++ - 在多线程 UDP 服务器中使用多个套接字

c++ - Visual Studio 11 Developer Preview 中的 BitScanForward64 问题

c++ - 从进程监视器中隐藏的进程

iphone - iPhone Contact app 的 detailView 是如何实现的

node.js - CORS 错误 : "The value of the ' Access-Control-Allow-Origin' header in the response must not be the wildcard '*' . ..”

node.js - 写一个文件保持制表符和 EOL

c++ - 这是词法分析器的代码 谁能详细解释这段代码?

ios - NSDictionary语法解释

javascript - 在 iOS Safari 中禁用链接上的默认拖动行为

javascript - IBM Bluemix Cloud : IBM SDK for Node. js - Bluemix 中的应用程序可以保留现有版本而不自动更新吗?