当前位置:编程学习 > CGI >>

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模式,还有什么模式。拒绝粘贴!!!

更多图片编程知识:
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,