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

1.头文件

  1. /*
  2. * 这个是处理HTTP请求的接口头文件
  3. */
  4. #define KEY_VALUE_MAX 1024 /* 键值的最大长度 */
  5. typedef unsigned char uChar;
  6.  
  7. /*
  8. * 接口
  9. *
  10. * 获取指定的键值
  11. */
  12. uChar *
  13. GetItsKeyValue( char const *keyName, char const *targetString );
  14.  
  15. /*
  16. * 对键值解码
  17. */
  18. uChar *
  19. ParseIt( uChar *keyValue );

头文件

2.接口定义

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <assert.h>
  5. #include "handleForHttpRequest.h"
  6.  
  7. /*
  8. * 把16进制转换为10进制
  9. */
  10. static uChar
  11. HexToDec( uChar *what )
  12. {
  13. uChar value;
  14.  
  15. value = (what [] >= + what [] - ] - ';
  16. value *= ;
  17. value += (what [] >= + what [] - ] - ';
  18. return value;
  19. }
  20.  
  21. /*
  22. * 获取指定的键值
  23. */
  24. uChar *
  25. GetItsKeyValue( char const *keyName, char const *targetString )
  26. {
  27. char const *subStr;
  28. char const *p;
  29. uChar *result;
  30. uChar *q;
  31.  
  32. /* 找到指定键值对的位置 */
  33. subStr = targetString;
  34. while( (subStr = strstr( subStr, keyName ) ) != NULL ){
  35. ] == '&' ){ //如果keyName是第一个键值名或者是中间的某个键值名
  36. break;
  37. }
  38. }
  39.  
  40. /* 找到对应的键值,并返回它 */
  41. if( subStr == NULL ){
  42. return NULL;
  43. }else{
  44. result = (uChar *) malloc ( KEY_VALUE_MAX * sizeof(uChar) );
  45. assert( result != NULL );
  46.  
  47. ; *p != '\0' && *p != '&'; p ++, q ++ ){
  48. *q = (uChar)*p;
  49. }
  50. *q = '\0';
  51. return result;
  52. }
  53. }
  54.  
  55. /*
  56. * 对键值解码
  57. */
  58. uChar *
  59. ParseIt( uChar *keyValue )
  60. {
  61. uChar *p, *q;
  62. uChar ch;
  63.  
  64. q = p = keyValue;
  65. while( (ch = *p) != '\0' ){
  66. if( ch == '%' ){
  67. *q = HexToDec( p + );
  68. p += ;
  69. }
  70. else{
  71. *q = (ch == '+')? ' ' : ch;
  72. p ++;
  73. }
  74. q ++;
  75. }
  76. *q = '\0';
  77. return keyValue;
  78. }

接口定义

代码片段:处理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. svn上传工程之后下载,打开下载之后的工程缺少文件

    当我们把iOS的工程上传到SVN中,当我们再从SVN中下载下来,就会出现错误,这是什么原因呢?我这里出现的错误是找不到文件,后来知道原来是被屏蔽掉了,就是上传的时候不上传某个类型的文件.例如我出错就是 ...

  2. Linux系统开机默认开启无线网卡

    Linux系统每次重新启动时,不会重新打开无线网卡,需要每次手动去更改. 这里通过两种方式开启无线网卡. 第一种方式就是手动连接到Linux系统,(前提是按照了Linux桌面) 1.找到文件夹为 et ...

  3. iOS 字符串删除 DOM

    iOS  string 删除 包含的 DOM NSMutableString *mutableString = [NSMutableString stringWithString:responseSt ...

  4. js立即调用的函数表达式

    1.多种实现 // 下面2个括弧()都会立即执行 (function () { /* code */ } ()); // 推荐使用这个 (function () { /* code */ })(); ...

  5. NetMQ(四): 推拉模式 Push-Pull

    ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...

  6. java内存泄露

    上一篇提到的是java垃圾回收,今天谈谈java的内存泄露. 首先谈下java的内存管理机制: 在Java程序中,我们通常使用new为对象分配内存,而这些内存空间都在堆(Heap)上. public ...

  7. Spring Cloud 统一配置

    http://blog.csdn.net/catoop/article/details/50955949

  8. Operation not allowed after ResultSet closed--操作mysql数据库

    一个stmt多个rs进行操作.那么从stmt得到的rs1,必须马上操作此rs1后,才能去得到另外的rs2,再对rs2操作.不能互相交替使用,会引起rs已经关闭错误——Operation not all ...

  9. DirectX9 Sample_Empty Project

    作为第一个程序,EmpytProject仅仅示范了如何绑定DXUTstate结构中的回调函数. 回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当 ...

  10. java并发J.U.C AtomicReference VS Volatile

    SpinLock实现,摘自并发编程网 package com.juc.simple; import java.util.concurrent.atomic.AtomicReference; /** * ...