zoukankan      html  css  js  c++  java
  • 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;    

    }




  • 相关阅读:
    CodeSmith中SchemaExplorer类详解
    配置 TransactSQL 调试器
    获取SQL所有数据库名、所有表名、所有字段名、表字段长度
    SQL SERVER数据类型与C#数据类型对照表
    C# orm linq 真的不错
    游戏外挂教程
    RDLC钻取式报表开发
    脚本整理
    访问Exchange Mail
    本人开发的带提示的TextBox控件
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4037016.html
Copyright © 2011-2022 走看看