在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/html\r\n\r\n";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/

HTTP POST方法的学习相关推荐

  1. SVO中 Inverse Compositional Image Alignment方法的学习笔记

    SVO中 Inverse Compositional Image Alignment方法的学习笔记 这篇文章 光流法简介 逆向光流法 结尾 这篇文章  在SVO系统中的"Relaxation ...

  2. mysql存储过程大于小于_mysql5.0存储过程操作符知识_函数方法[Mysql学习]

    mysql存储过程基本函数 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2  [,... ]) //连接字串 INSTR (string ,substrin ...

  3. 【工具】(转)PowerDesigner最基础的使用方法入门学习

    PowerDesigner最基础的使用方法入门学习 https://www.cnblogs.com/biehongli/p/6025954.html 转载于:https://www.cnblogs.c ...

  4. 【关于Java方法的学习】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.方法的定义 二.方法的调用 三.方法的重载 1,重载的定义 2,方法的重载的规则 3,实现理论 四.命令行传参 五 ...

  5. Java—String类的intern方法的学习

    对intern方法的学习来源于之前偶然看到的一篇博客:[请别再拿"String s = new String("xyz");创建了多少个String实例"来面试 ...

  6. 速学计算机的方法,速记基础:计算机速记方法与学习要点

    双文速记,是根据华语双文(方块字和拉丁字母)原理,在汉语拼音方案基础上采用适合速记要求的拼音方法,在计算机标准键盘上分布普通话的21个辅音.35个元音.4个声调和12个词类字母,将汉语词汇中某些高频单 ...

  7. 基于迁移学习的旋转机械故障诊断方法研究学习笔记

    基于迁移学习的旋转机械故障诊断方法研究学习笔记 现在大一点的神经网络模型也要求数据量的足够大,但是对于小样本的数据,有一些神经网络模型也能够处理的很好 2. 这是现在神经网络也要求的数据最好能够独立同 ...

  8. 用matlab绘制树叶,UG画树叶的叶子,这个三维建模方法值得学习

    原标题:UG画树叶的叶子,这个三维建模方法值得学习 今天来教大家绘制一片树叶,学会了大家再做个树干,这样就能完成一些塑料盆栽模型了,来学习一下绿叶的画法吧,这可是最简单的曲面做法了. 建模过程: 1. ...

  9. 方法是学习和进步的捷径

    方法是学习和进步的捷径 我懒,所以喜欢琢磨方法,人类懒,所以人类在不停的创造舒适中进步. 方法论是门科学,统筹学是其主要应用.想成功的人无数,但利用好方法的人不多,于是成功的人成为少数. 方法是什么? ...

  10. LayoutInflater中inflate()方法的学习使用

    LayoutInflater中inflate()方法的学习使用 一.LayoutInflater ​ LayoutInflater实例化一个xml布局加到对应的View对象中.该对象不直接使用.调用g ...

最新文章

  1. 光电转换模块_光纤模块和光纤收发器连接时要注意什么?
  2. python 搜索插入位置
  3. oracle获取分组后的统计信息,并只要前五条
  4. 关于flex布局的深入学习
  5. Head First设计模式一:策略模式
  6. mysql組合主鍵_MySQL(二)
  7. 相似性度量:机器学习距离公式总结
  8. linux之type命令
  9. thinkphp5.0连接mysql_thinkphp5.0数据库操作
  10. Android 使用传感器
  11. eeprom和编程器固件 k2_斐讯K2刷不死breed与第三方固件教程
  12. java sao_JavaScript 的一些SAO操作
  13. 计算机打印错误,打印机错误正在打印处理方法,教您电脑打印机错误正在打印处理方法...
  14. 阿里云服务器搭建 图文详细教程
  15. 【转载】装机知识显卡篇,一篇文章让小白透彻的了解显卡
  16. threejs 加载obj模型
  17. java 判断对象的属性是否为空_Java 判断实体对象及所有属性是否为空的操作
  18. 输入法半角和全角的快捷转换_搜狗输入法经常用到的冷门小技巧,复制文章空白行取消方法...
  19. 大数据同步利器: 表格存储全增量一体消费通道
  20. typedef的用法简介

热门文章

  1. for循环:水仙花案例
  2. 1-5 CAD基础 圆(circle)
  3. javascript如何判断浏览器是否安装某插件
  4. 在EXCEL中使用VLOOKUP函数 快速批量查找对应内容
  5. 小程序代码上传-审核-发布,体验者权限设置
  6. 终端进程启动失败: shell 可执行文件“C:\instaillSpace\Git\bin\bash.exe”的路径
  7. svr公式推导_关于污泥回流比计算公式的推导!
  8. 共话龙蜥:如何协同构建统一生态?
  9. 借名买房委托协议是否有效?
  10. python 学生考勤系统