• CGI原理解析系列之中的一个----CGI怎样获取WEBserver数据



    //gcc get_post.c -o get_post.ums;


    #include <stdio.h>

    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>

    int main(int argc,char *argv[])
    {
        size_t i = 0,n = 0;
        printf("Content-Type:text/plain ");
        char * method = NULL;
        //获取HTTP请求方法(POST/GET)
        if(NULL == (method = getenv("REQUEST_METHOD")))
        {
            return 0;
        }

        
        if(getenv("CONTENT_LENGTH") && strcmp(method,"POST") == 0)
        {
            //POST 方法解析,从 STDIN_FILENO 动态获取数据
            n = atoi(getenv("CONTENT_LENGTH"));
            size_t length = n * sizeof(char) + 1;
            char * inputdata = (char *)malloc(length);
            if(inputdata)
            {
                memset((void*)inputdata,0,length);
                if(n != read(STDIN_FILENO,inputdata,n));
                {
                    //
                }
                printf("hello %s,cgi post call. ",inputdata);
                free(inputdata);
            }
        }
        else if(getenv("QUERY_STRING") && strcmp(method,"GET") == 0)
        {
            //环境变量的长度有限,导致GET方法传送数据被限制
            char * inputdata = getenv("QUERY_STRING");
            printf("hello %s,get call. ",inputdata);
        }
        else
        {
            printf("%s ","bad request!");
        }
        fprintf(stdout,"finish,data length %d ",n);
        return 0;    

    }




  • 相关阅读:
    iPhone将NSString转换编码集为gb2312或者gbk的方法
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    苹果开发者各地区联系电话
    iOS开发中,应用内直接跳转到Appstore
    高亮显示UILabel中的子串
    UML
    All Classic Bluetooth profile for iPhone
    智能穿戴设备移动APP端与外设数据传输协议功能模块CMD&ACK表
    Mac 使用技巧分享
    git branch管理小结
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4037016.html
Copyright © 2020-2023  润新知