以下程序用来获取用户传递过来的信息。

1.头文件

/*
 * 这个是处理HTTP请求的接口头文件
 */
#define KEY_VALUE_MAX 1024 /* 键值的最大长度 */
typedef unsigned char uChar;

/*
 * 接口
 *
 * 获取指定的键值
 */
uChar *
GetItsKeyValue( char const *keyName, char const *targetString );

/*
 * 对键值解码
 */
uChar *
ParseIt( uChar *keyValue );

头文件

2.接口定义

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <assert.h>
 #include "handleForHttpRequest.h"

 /*
  * 把16进制转换为10进制
  */
 static uChar
 HexToDec( uChar *what )
 {
     uChar value;

     value = (what [] >=  + what [] - ] - ';
     value *= ;
     value += (what [] >=  + what [] - ] - ';
     return value;
 }

 /*
  * 获取指定的键值
  */
 uChar *
 GetItsKeyValue( char const *keyName, char const *targetString )
 {
     char const *subStr;
     char const *p;
     uChar *result;
     uChar *q;

     /* 找到指定键值对的位置 */
     subStr = targetString;
     while( (subStr = strstr( subStr, keyName ) ) != NULL ){
         ] == '&' ){ //如果keyName是第一个键值名或者是中间的某个键值名
             break;
         }
     }

     /* 找到对应的键值,并返回它 */
     if( subStr == NULL ){
         return NULL;
     }else{
         result = (uChar *) malloc ( KEY_VALUE_MAX * sizeof(uChar) );
         assert( result != NULL );

         ;  *p != '\0' &&  *p != '&';  p ++, q ++ ){
             *q = (uChar)*p;
         }
         *q = '\0';
         return result;
     }
 }

 /*
  * 对键值解码
  */
 uChar *
 ParseIt( uChar *keyValue )
 {
     uChar *p, *q;
     uChar ch;

     q = p = keyValue;
     while( (ch = *p) != '\0' ){
         if( ch == '%' ){
             *q = HexToDec( p +  );
             p += ;
         }
         else{
             *q = (ch == '+')? ' ' : ch;
             p ++;
         }
         q ++;
     }
     *q = '\0';
     return keyValue;
 }

接口定义

代码片段:处理HTTP请求的接口的更多相关文章

  1. C#动态编译代码,执行一个代码片段,或者从指定文件中加载某个接口的实现类

    在项目进行中有时候会需要配置一些复杂的表达式,在程序运行的时候执行表达式,根据结果执行相应的操作,简单写了一个类Expression,利用.net的动态编译技术实现,代码如下: public clas ...

  2. 微信JS支付代码_前端调用微信支付接口

    转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...

  3. 金蝶handler中 collection 代码片段理解

    1,AtsOverTimeBillBatchEditHandler中collection的理解 SelectorItemCollection selectors = new SelectorItemC ...

  4. webapi+Task并行请求不同接口实例

    标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...

  5. js/jquery/html前端开发常用到代码片段

    1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...

  6. 50个jquery代码片段(转)

    本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...

  7. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)

    摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...

  8. 超级有用的9个PHP代码片段

    在开发网站.app或博客时,代码片段可以真正地为你节省时间.今天,我们就来分享一下我收集的一些超级有用的PHP代码片段.一起来看一看吧! 1.创建数据URI 数据URI在嵌入图像到HTML / CSS ...

  9. 提高php开发效率的9大代码片段

    在网站开发中,我们都期望能高效快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是极好的.php开发福利来了,今天小编就将为大家分享9大超实用的.可节省大量开发时间的php代码片段. ...

随机推荐

  1. mac显示任何来源

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Microsoft YaHei"; color: #333333; ba ...

  2. BFS_Maze_求解迷宫最短路径

    /* 10 10 #.######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... .## ...

  3. 关于for循环------swift3.0

    在程序开发当中,for循环使用的频率无疑是最高的.常用的swift循环是递增式遍历.当然各种循环,swift都能办到.但其大多采用关键字形式实现,大部分开发者更喜欢直接使用C式循环代码.在swift3 ...

  4. SimpleXML操控XML

    复杂字符串如下: $_xml=<<<_xml <?xml version="1.0" encoding="utf-8"?> < ...

  5. 用代码控制鼠标键盘(C#语言)

    前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...

  6. Mysql中eft join、right join、inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  7. 浅谈我对C#中抽象类与接口的理解

    C#中的抽象类与接口有些相似,初学者很容易混淆,今天就让我来谈谈对二者的理解. 首先我们得明确二者的含义,分述如下: 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个 ...

  8. Python 创建本地服务器环境生成二维码

    一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...

  9. spfa模板

    通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...

  10. 特征描述算子-sift

    特征描述算子-sift http://boche.github.io/download/sift/Introduction%20to%20SIFT.pdf