cgi程序如何接收Qt客户端参数?
pc客户端用Qt写的,用http->post("./test","input");语句向开发板上cgi程序发送参数input,板子上的cgi程序如何接收?
在网上查资料有人说在cgi中直接接收标准输入就可以,但是我试了试,无效
cgi测试源码如下:
1 #include<stdio.h>
2 int main(int argc,char **argv)
3 {
4 char *a=NULL;
5 printf("this is the cgi ,please input 'a'\n");
6 scanf("%s",a);
7 printf("a is %s\n",a);//这里minicom中应该输出“input”这个字符串吧,为什么我的没有输出呢?
11 return 0;
12 }
上面的小程序不能按预期运行,求高手给出建议或者给我一个新的接收QT QHttp::post传过来的参数并进行简单处理的一个小程序作示例
追问:你说的我明白了,对我很有帮助,那么请问你知道该如何通过qt访问cgi吗?
答案:以下的程序测试过了,可以满足你的要求了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//输出HTTP头
printf("Content-type: text/plain\n\n");
//从CONTENT_LENGTH环境变量中取出其值
int n = atoi(getenv("CONTENT_LENGTH"));
printf("%d\n", n);
char buf[20];
memset(buf, 0, sizeof(buf));
//从stdin标准输入流中读取数据
fgets(buf, n, stdin);
//输出
printf("Hi, this is CGI with c\n");
printf("%s\n", buf);
return 0;
}
大致流程你都懂,就是有些细节不清楚吧。从stdin读取数据时,首先要知道读多长的数据,而这个长度保存在“CONTENT_LENGTH‘整个环境变量中。另外从stdin读取数据要用fgets函数,scanf不是用在网络通信中读取数据用的。
其他:不会,因为服务器返回给客户端的都字符串,需要在客户端进行代码转换,js中eval方法就可以实现
上一个:在远程服务器上配置了一个cgi页面,该页面代码调用perl的xml::writer模块,生成XML文件无法成功。
下一个:php 除了cgi模式,还有什么模式。拒绝粘贴!!!