快速业务通道

用C++Builder开发ISAPI扩展应用程序

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
xtensionProc () 函数返回前,在此放置HTTP状态码,
                 //参见HTTP1.0规范定义
   char lpszLogData[80];  //接收一记录信息字符串
   char *lpszMethod;  //命名请求方式的字符串的指针
   char *lpszQueryString;  //含一个GET请求查询的字符串指针
   char *lpszPathInfo;  //请求的字符串的指针
   char *lpszPathTranslated; //把请求的字符串指针翻译为服务器的物理路径
   unsigned cbTotalBytes;  //请求中字节的全部数目
   unsigned cbAvailable; //lpbData缓冲区长度
   void *lpbData;   //POST请求的数据缓冲区指针
   char *lpszContentType;  //识别请求的MIME内容类型的指针
   TGetServerVariableProc GetServerVariable; /*检索服务器变量值的回调函数指针*/
   TWriteClientProc WriteClient; //写数据给用户的回调函数的指针
   TReadClientProc ReadClient;  //检索用户数据的回调函数指针
   TServerSupportFunctionProc ServerSupportFunction;  /*支持其他操作的回调函数指针*/
   }

这种结构包含服务请求和回调函数指针所需得信息,你可以调用它来获取信息或执 行操作,下面对其中的回调函数作一说明:

(1)GetServerVariable函数

原型为:

typedef BOOL _stdcall (*TgetServerVarableProc) (int hConn,*VariableName, void *Buff,int &Size);

调用这个函数来获取服务器变量(如CONTEXT_TYPE)和同请求一起收到的头部。如通 过请求, 则得到HTTP_COOKIE来检索Cookies头部的内容。参数说明:hConn为传入参数 ECB的连接句柄ConnID;VariableName为要检索的变量的名字(如HTTP_COOKIE);Buffer为 接收变量的缓冲区指针;Size为缓冲区大小,若由于缓冲区空间不够而失败,该值被改 变为必要的缓冲区大小。

(2)WriteClient函数

原型为:

typedef BOOL _stdcall (*TWriteClientProc) (int ConnID,void *Buffer,int & Bytes,int dwReserver)

调用这个函数来发送响应内容给用户, 参数说明:ConnID为传入参数ECB中的连接 句柄ConnID; Buffer为包含写数据缓冲区的指针; Bytes为缓冲区数据的字节数; dwReserver保留。

(3)ReadClient函数

原型为:

typedef BOOL _stdcall (*TReadClientProc) (int ConnID, void *Buffer,int & Size)

调用这个函数读取用户的附加数据,通过检验ECB中cbAvailable和cbTotalBytes的 值来确定是否调用此函数, 若cbTotalBytes大于cbAvailable;就表明有更多的数据需 要调用该函数去读取。 参数说明:ConnID为传入参数ECB中的连接句柄ConnID;Buffer 为读入数据存放的缓冲区;Size在调用时,传入Buffer缓冲区的大小,返回时,等于实 际读取的字节数。

(4)ServerSupportFunction函数

原型为:

typedef BOOL _stdcall (*TServerSupportFunctionProc) (int hConn, int HSERRequest,void buffer,int &Size,PDWORD DataType);

这个函数实现其他一些操作,参数说明:hConn为传入参数ECB的连接句柄ConnID, HSERRequest为要实现操作的常量值。Size为Buffer缓冲区的大小,Buffer缓冲区指针; DataType为数据类型指针;其中Buffer和DataType的含义根据HSERRequest的值变化。

下面说明这个函数的几个主要操作(也就是HSERRequest的可用值,在Isapi2.hpp中 定义),以及对应不同的操作,参数Buffer,Size,DataType的不同含义:

●HSE_REQ_SEND_URL_REDIRECT_RESP: 重定向客户浏览器到另一个网址上的URL。 Buffer:指向一重定向目标URL字符串;DataType被忽略。

●HSE_REQ_SEND_URL: 重定向到本服务器上的一个URL,Buffer: 指向一重定向目

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号