CGI编程中POSTGET详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CGI编程中POSTGET详解相关的知识,希望对你有一定的参考价值。
什么是 HTTP?
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
HTTP 的工作方式是客户机与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。
两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
GET 方法
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.asp?name1=value1&name2=value2
有关 GET 请求的其他一些注释:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
POST 方法
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
有关 POST 请求的其他一些注释:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
实例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char InputBuffer[4096];
int main(int argc, char*argv[])
{
int x, i;
int ContentLength; /*数据长度*/
char *p=NULL;
char *pRequestMethod; /* METHOD属性值 */
while(FCGI_Accept()>0)
{
/* 从环境变量REQUEST_METHOD中得到METHOD属性值 */
pRequestMethod = getenv("REQUEST_METHOD");
if(pRequestMethod==NULL)
{
printf("<p>request = null</p>");
return 0;
}
if (strcasecmp(pRequestMethod,"POST")==0)
{
printf("<p>OK the method is POST!\n</p>");
p = getenv("CONTENT_LENGTH"); //从环境变量CONTENT_LENGTH中得到数据长度
if (p!=NULL)
{
ContentLength = atoi(p);
}
else
{
ContentLength = 0;
}
if (ContentLength > sizeof(InputBuffer)-1) {
ContentLength = sizeof (InputBuffer) - 1;
}
i = 0;
while (i < ContentLength)
{ //从stdin中得到Form数据
x = fgetc(stdin);
if (x==EOF)
break;
InputBuffer[i++] = x;
}
InputBuffer[i] = ‘\0‘;
ContentLength = i;
DecodeAndProcessData(InputBuffer); //具体译码和处理数据,该函数代码略
}
else if (strcasecmp(pRequestMethod,"GET")==0)
{
printf("<p>OK the method is GET!\n</p>");
p = getenv("QUERY_STRING"); //从环境变量QUERY_STRING中得到Form数据
if (p!=NULL)
{
strncpy(InputBuffer,p,sizeof(InputBuffer));
Data(InputBuffer); //具体译码和处理数据,该函数代码略
}
}
}
return 0;
}
int Data(char *input) //具体译码和处理数据
{
// 补充具体操作
return 0;
}
一般理解了这个例子就可以掌握POST和GET方法数据的获取方式了。
参考:http://blog.csdn.net/naturebe/article/details/7437549
参考:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
本文出自 “Linux_woniu” 博客,请务必保留此出处http://llu1314.blog.51cto.com/5925801/1965305
以上是关于CGI编程中POSTGET详解的主要内容,如果未能解决你的问题,请参考以下文章