代码片段:处理HTTP请求的接口
以下程序用来获取用户传递过来的信息。
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请求的接口的更多相关文章
- C#动态编译代码,执行一个代码片段,或者从指定文件中加载某个接口的实现类
在项目进行中有时候会需要配置一些复杂的表达式,在程序运行的时候执行表达式,根据结果执行相应的操作,简单写了一个类Expression,利用.net的动态编译技术实现,代码如下: public clas ...
- 微信JS支付代码_前端调用微信支付接口
转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...
- 金蝶handler中 collection 代码片段理解
1,AtsOverTimeBillBatchEditHandler中collection的理解 SelectorItemCollection selectors = new SelectorItemC ...
- webapi+Task并行请求不同接口实例
标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据:我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始 ...
- js/jquery/html前端开发常用到代码片段
1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...
- 50个jquery代码片段(转)
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
- Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)
摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...
- 超级有用的9个PHP代码片段
在开发网站.app或博客时,代码片段可以真正地为你节省时间.今天,我们就来分享一下我收集的一些超级有用的PHP代码片段.一起来看一看吧! 1.创建数据URI 数据URI在嵌入图像到HTML / CSS ...
- 提高php开发效率的9大代码片段
在网站开发中,我们都期望能高效快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是极好的.php开发福利来了,今天小编就将为大家分享9大超实用的.可节省大量开发时间的php代码片段. ...
随机推荐
- git tag使用标记
git跟其它版本控制系统一样,可以打标签(tag), 作用是标记一个点为一个版本号,如0.1.3, v0.1.7, ver_0.1.3.在程序开发到一个阶段后,我们需要打个标签,发布一个版本,标记的作 ...
- MySQL的一些知识。
新MySQL而言:对于myisam引擎的表select默认是会锁定该表(共享锁)的 ,会导致其他操作挂起,处于等待状态.对于innodb引擎的表select默认是不会锁表(也不会锁行,简而言之就是不加 ...
- 【leetcode】Number of 1 Bits
题目描述: Write a function that takes an unsigned integer and returns the number of '1' bits it has (als ...
- Spring-boot 开发Web应用
动态修改Freemarker模版: 设置模版属性: spring.freemarker.cache=false 启动应用方式有两种: a. 运行main()函数启动应用:则修改完模版文件后,需要把 ...
- MachineKey 操作 之 获取 MachineKey
MachineKey获取介绍 对MachineKey进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证.本次讲的是如 ...
- CozyRSS开发记录11-够用的RSS源管理
CozyRSS开发记录11-够用的RSS源管理 1.分析需求 先随手画个用例图来看看有哪些参与者会访问我们的源管理: 2.搞一个Controller类 根据前面分析得出的用例图,我们就可以来设计实现一 ...
- 阿里开源消息中间件RocketMQ的前世今生-转自阿里中间件
昨天,我们将分布式消息中间件RocketMQ捐赠给了开源软件基金会Apache. 孵化成功后,RocketMQ或将成为国内首个互联网中间件在Apache上的顶级项目. 消息一出,本以为群众的反应是这样 ...
- 执行打的maven jar包时出现“Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes”
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for ...
- 正定矩阵(positive definite matrix)
设M是n阶方阵,如果对任何非零向量z,都有zTMz> 0,其中zT 表示z的转置,就称M正定矩阵. 正定矩阵在合同变换下可化为标准型, 即对角矩阵. 所有特征值大于零的对称矩阵也是正定矩阵. ...
- html学习第二天—— 第九、十章——CSS的继承、层叠和特殊性+CSS格式化排版
继承CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码:如某种颜色应用于p标签,这个颜色设置不仅应用p标签, ...