[英]How to call a function written in C with axios?
我已經使用微控制器開發了嵌入式 Web 服務器,但我不確定是否可以將 Apache 或任何其他服務器下載到我的控制器中。
但是,我已經成功地實現了一個 HTTP 接口,並且一直在托管網頁並在嵌入式 Web 服務器端處理和解析 POST 請求數據/有效負載。
當網頁包含要提交的任何表單類型數據時,問題就來了。
我收到了用戶在網頁上輸入的值,但我無法在嵌入式服務器發送的網頁上正確顯示數據。
這就是鏈接 C (freeRTOS) 代碼(服務器端)和 JS(客戶端)的主要問題所在。
假設我已經成功地與網頁建立了 HTTP 連接並且我也能夠如上所述托管頁面,那么 JS Web 客戶端如何從嵌入式 Web 服務器(在 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 接口。
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);
如何通過用 C 編寫的 cgi-bin 程序檢索表單“POST”數據
有關 CGI C 程序的更多信息:http: //jkorpela.fi/forms/cgic.html
考慮將 libcgi http://libcgi.sourceforge.net用於 CGI C 程序。
我建議使用更適合網絡開發的高級語言。 Python / PHP / C# / Java / 等..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.