以下程序用来获取用户传递过来的信息。
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; }
接口定义