HTTP POST方法的学习 - Go语言中文社区

HTTP POST方法的学习


在POST方法下,CGI程序可以直接从服务器的标准输入中获取数据,不过要先从CONTENT_LENGTH这个环境变量中得到POST参数的长度,然后再读取相应长度的内容。


先弄个post.html,并放到htdocs目录下。

<html>
<head>
<title>CGI POST</title>
</head>
<body>
<tr>
<td>
<div>Method:POOST</div>
<div>Please input two number:</div>
<form method="post" action="/cgi-bin/post">
<input type="txt" size="3" name="m">*
<input type="txt" size="3" name="n">=
<input type="submit" value="result">
</form>
</td>
</tr>
</body>
</html>


代码如下:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <stdio.h>


int post_method()
{
	std::cout<<"Content-type:text/htmlrnrn";
	std::cout<<"<html>n";
	
	std::cout<<"<head>n";
	std::cout<<"<title>Testing Post</title>n";
	std::cout<<"</head>n";

	std::cout<<"<body>n";

	std::cout<<"get parameter:<br/>";

	char *lenstr = getenv("CONTENT_LENGTH");

	if(lenstr == NULL)
	{
		std::cout<<"Error, CONTENT_LENGTH should be entered"<< "<br/>";
	}
	else
	{
		int len = atoi(lenstr);
		char poststr[20];
		fgets(poststr, len + 1,stdin);
		std::cout<<"poststr:"<< poststr<<"<br/>";
		char m[10];
		char n[10];
		if(2 != sscanf(poststr,"m=%[^&]&n=%s",m,n))
		{
			std::cout<<"Error:Parameters are not right!<br/>";
		}
		else
		{
			std::cout<<"m*n="<<atoi(m)*atoi(n)<<"<br/>";
		}
	}

	std::cout<<"</body>n";
	std::cout<<"</html>n";

	return 0;
}

int main()
{
	post_method();
	return 0;
}




编译:

 g++ 2.cpp  -g -o post

拷贝:

cp /share/post cgi-bin/







版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhouzhenhe2008/article/details/77411440
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-06 22:29:26
  • 阅读 ( 947 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢