- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用微 Controller 开发嵌入式网络服务器,但我不确定是否可以将 Apache 或任何其他服务器下载到我的 Controller 中。
不过,我已经成功地实现了一个 HTTP 接口(interface),并一直在托管网页并在嵌入式 Web 服务器端处理和解析 POST 请求数据/有效负载。
当网页包含要提交的任何表单类型数据时,问题就来了。
我收到了用户在网页上输入的值,但我无法在嵌入式服务器发送的网页上正确显示数据。
这就是链接 C (freeRTOS) 代码(服务器端)和 JS(客户端)的主要问题所在。
假设我已经成功地与网页建立了 HTTP 连接并且我也能够如上所述托管页面,那么 JS 网络客户端如何从嵌入式网络服务器(在 freeRTOS 中)提取数据?
目前我正在使用 axios 但无法弄清楚如何在 URL 中调用 C 函数?因为没有函数就不可能在 C 中编写代码。
axios({
method: 'post',
url: 'getStatus.c',
data: sampleData,
headers: {'Content-Type': 'multipart/form-data' }
})
.then(function (response) {
console.log(response);
})
最佳答案
axios 是一种客户端(JS 库)技术。任何要与 axios 交互的服务器端程序都必须实现某种 HTTP 接口(interface)。
CGI 程序可以像这样简单(处理 POST 请求有点困难):
#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 请求数据:
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
考虑使用 libcgi http://libcgi.sourceforge.net用于 CGI C 程序。
我建议使用更适合网络开发的高级语言。 Python/PHP/C#/Java/等等。
关于javascript - 如何用axios调用用C写的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59126875/
我是一名优秀的程序员,十分优秀!