提交 c7d31adcdc3fcb024fb9d3af6d6b8da01b0b137e

作者 LJH 李佳桓
1 个父辈 9c819d9d

add

正在显示 1 个修改的文件 包含 99 行增加0 行删除
  1 +/*
  2 + * Copyright 2007 Stephen Liu
  3 + * For license terms, see the file COPYING along with this library.
  4 + */
  5 +
  6 +#include <stdio.h>
  7 +#include <stdlib.h>
  8 +#include <sys/stat.h>
  9 +#include <string.h>
  10 +
  11 +#include "sphttpmsg.hpp"
  12 +
  13 +void printMessage( SP_HttpMessage * message )
  14 +{
  15 + for( int i = 0; i < message->getHeaderCount(); i++ ) {
  16 + printf( "%s: %s\n", message->getHeaderName( i ), message->getHeaderValue( i ) );
  17 + }
  18 + printf( "\n" );
  19 +
  20 + if( NULL != message->getContent() ) {
  21 + printf( "%s", (char*)message->getContent() );
  22 + }
  23 +
  24 + printf( "\n" );
  25 +}
  26 +
  27 +void printRequest( SP_HttpRequest * request )
  28 +{
  29 + printf( "%s %s %s\n", request->getMethod(), request->getURI(), request->getVersion() );
  30 +
  31 + for( int i = 0; i < request->getParamCount(); i++ ) {
  32 + printf( "Param: %s=%s\n", request->getParamName(i), request->getParamValue(i) );
  33 + }
  34 +
  35 + printMessage( request );
  36 +}
  37 +
  38 +void printResponse( SP_HttpResponse * response )
  39 +{
  40 + printf( "%s %d %s\n", response->getVersion(), response->getStatusCode(),
  41 + response->getReasonPhrase() );
  42 + printMessage( response );
  43 +}
  44 +
  45 +int main( int argc, char * argv[] )
  46 +{
  47 + char * filename = NULL;
  48 +
  49 + if( argc < 2 ) {
  50 + printf( "Usage: %s <file>\n", argv[0] );
  51 + exit( -1 );
  52 + } else {
  53 + filename = argv[1];
  54 + }
  55 +
  56 + FILE * fp = fopen ( filename, "r" );
  57 + if( NULL == fp ) {
  58 + printf( "cannot not open %s\n", filename );
  59 + exit( -1 );
  60 + }
  61 +
  62 + struct stat aStat;
  63 + char * source = NULL;
  64 + stat( filename, &aStat );
  65 + source = ( char * ) malloc ( aStat.st_size + 1 );
  66 + fread ( source, aStat.st_size, sizeof ( char ), fp );
  67 + fclose ( fp );
  68 + source[ aStat.st_size ] = 0;
  69 +
  70 + SP_HttpMsgParser parser;
  71 + //parser.setIgnoreContent( 1 );
  72 +
  73 + int parsedLen = 0;
  74 + for( int i = 0; i < (int)strlen( source ); i++ ) {
  75 + parsedLen += parser.append( source + parsedLen, i - parsedLen + 1 );
  76 + //printf( "%d, %d\n", i, parsedLen );
  77 + }
  78 +
  79 + printf( "source length : %d, parsed length : %d\n", strlen( source ), parsedLen );
  80 +
  81 + printf( "parse complete : %s\n", parser.isCompleted() ? "Yes" : "No" );
  82 +
  83 + printf( "ignore content: %s\n", parser.isIgnoreContent() ? "Yes" : "No" );
  84 +
  85 + puts( "\n" );
  86 +
  87 + if( NULL != parser.getRequest() ) {
  88 + printRequest( parser.getRequest() );
  89 + }
  90 +
  91 + if( NULL != parser.getResponse() ) {
  92 + printResponse( parser.getResponse() );
  93 + }
  94 +
  95 + free( source );
  96 +
  97 + return 0;
  98 +}
  99 +
... ...
注册登录 后发表评论