首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用axios调用用C编写的函数?

如何用axios调用用C编写的函数?
EN

Stack Overflow用户
提问于 2019-12-01 23:16:14
回答 1查看 167关注 0票数 1

我使用微控制器开发嵌入式web服务器,但我不确定是否可以将Apache或任何其他服务器下载到我的控制器中。

然而,我已经成功地实现了一个HTTP接口,并且已经在嵌入式web服务器端托管网页并处理和解析POST请求数据/有效负载。

当网页包含要提交的任何表单类型的数据时,问题就出现了。

我收到用户在网页上输入的值,但无法在嵌入式服务器发送的网页上正确显示数据。

这就是连接C (freeRTOS)代码(服务器端)和JS (客户端)的主要问题所在。

JS web客户端如何从嵌入式web服务器(在freeRTOS中)拉取数据,假设我已经成功地与web页面建立了连接,并且我还能够如上所述地托管页面?

目前我正在使用axios,但不知道如何在URL中调用C函数?因为在没有函数的情况下,不可能用C编写代码。

代码语言:javascript
运行
复制
axios({
method: 'post',
url: 'getStatus.c',
data: sampleData,
headers: {'Content-Type': 'multipart/form-data' }
})
.then(function (response) {
    console.log(response);
})
EN

回答 1

Stack Overflow用户

发布于 2019-12-01 23:45:14

不能直接调用未编译的C源文件中的函数。

axios是一种客户端( JS )技术。您想要与axios交互的任何服务器端程序都必须实现某种HTTP接口。

如果您必须使用C来实现这样的功能:

在C中

  1. Implement一个CGI接口

CGI程序可以像这样简单(处理POST请求要困难一点):

代码语言:javascript
运行
复制
#include <stdio.h>

int main()
{
  printf("Content-type: text/html\n\n");
  printf("<html>\n");
  printf("<body>\n");
  printf("<h1>Hello there!</h1>\n");
  printf("</body>\n");
  printf("</html>\n");
  return 0;
}

您可以通过以下方式访问POST请求数据:

代码语言:javascript
运行
复制
len_ = getenv("CONTENT_LENGTH");
len = strtol(len_, NULL, 10);
postdata = malloc(len + 1);
if (!postdata) { /* handle error or */ exit(EXIT_FAILURE); }
fgets(postdata, len + 1, stdin);
/* work with postdata */
free(postdata);

How to retrieve form "POST" data via cgi-bin program written in C

有关CGI C程序的更多信息:http://jkorpela.fi/forms/cgic.html

考虑对CGI C程序使用libcgi http://libcgi.sourceforge.net

对CGI program.

  • Use Apache2或Nginx进行
  1. Compile以提供CGI“脚本”,在本例中为已编译的binary.

如果不优先使用C语言:

我建议使用一种更适合web开发的高级语言。Python / PHP / C# / Java /等

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59126875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档