我使用微控制器开发嵌入式web服务器,但我不确定是否可以将Apache或任何其他服务器下载到我的控制器中。
然而,我已经成功地实现了一个HTTP接口,并且已经在嵌入式web服务器端托管网页并处理和解析POST请求数据/有效负载。
当网页包含要提交的任何表单类型的数据时,问题就出现了。
我收到用户在网页上输入的值,但无法在嵌入式服务器发送的网页上正确显示数据。
这就是连接C (freeRTOS)代码(服务器端)和JS (客户端)的主要问题所在。
JS web客户端如何从嵌入式web服务器(在freeRTOS中)拉取数据,假设我已经成功地与web页面建立了连接,并且我还能够如上所述地托管页面?
目前我正在使用axios,但不知道如何在URL中调用C函数?因为在没有函数的情况下,不可能用C编写代码。
axios({
method: 'post',
url: 'getStatus.c',
data: sampleData,
headers: {'Content-Type': 'multipart/form-data' }
})
.then(function (response) {
console.log(response);
})发布于 2019-12-01 23:45:14
不能直接调用未编译的C源文件中的函数。
axios是一种客户端( JS )技术。您想要与axios交互的任何服务器端程序都必须实现某种HTTP接口。
如果您必须使用C来实现这样的功能:
在C中
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
考虑对CGI C程序使用libcgi http://libcgi.sourceforge.net。
对CGI program.
如果不优先使用C语言:
我建议使用一种更适合web开发的高级语言。Python / PHP / C# / Java /等
https://stackoverflow.com/questions/59126875
复制相似问题