ISAPI之Http返回不同的数据类型
来源:互联网 发布:淘宝2个金冠店值多少钱 编辑:程序博客网 时间:2024/05/18 02:51
在写ISAPI程序时,不同的情况可能需要返回不容的数据类型,例如有的http响应需要文本,有的可以是二进制更省流量,有的需要另存为某种文件,示例代码如下。
1返回文本,可以直接以网页的形式打开
DWORD ReturnText(LPEXTENSION_CONTROL_BLOCK pECB,const vector<char>& vecBody) { char HeaderBuff[300]; DWORD dwBodySize = (DWORD)vecBody.size(); DWORD dwHeaderSize = (DWORD)sprintf_s(HeaderBuff, "Content-Type: text/plain\r\n" "Charset: utf-8\r\n" "Cache-Control: no-store\r\n" "Content-Length: %d\r\n\r\n", dwBodySize); if(!pECB->ServerSupportFunction(pECB->ConnID,HSE_REQ_SEND_RESPONSE_HEADER,NULL,&dwHeaderSize,(LPDWORD)HeaderBuff)) { return HSE_STATUS_ERROR; } if (dwBodySize > 0) { if(!pECB->WriteClient(pECB->ConnID,(LPVOID)&vecBody[0],&dwBodySize,0)) { return HSE_STATUS_ERROR; } } return HSE_STATUS_SUCCESS; }
2返回某种文件格式的数据流,弹出保存文件窗口,可设置一个文件名称
DWORD ReturnCSV(LPEXTENSION_CONTROL_BLOCK pECB,const vector<byte>& vecBody, const string& strFileName) { char HeaderBuff[300]; DWORD dwBodySize = (DWORD)vecBody.size(); DWORD dwHeaderSize = (DWORD)sprintf_s(HeaderBuff, "Content-Type: application/vnd.ms-excel\r\n" "Content-Disposition:filename=%s.csv\r\n" "Charset: GB2312\r\n" "Cache-Control: no-store\r\n" "Content-Length: %d\r\n\r\n", strFileName.c_str(), dwBodySize); if(!pECB->ServerSupportFunction(pECB->ConnID,HSE_REQ_SEND_RESPONSE_HEADER,NULL,&dwHeaderSize,(LPDWORD)HeaderBuff)) { return HSE_STATUS_ERROR; } if (dwBodySize > 0) { if(!pECB->WriteClient(pECB->ConnID,(LPVOID)&vecBody[0],&dwBodySize,0)) { return HSE_STATUS_ERROR; } } return HSE_STATUS_SUCCESS; }
3二进制,更省流量
DWORD ReturnBinary(LPEXTENSION_CONTROL_BLOCK pECB,const vector<byte>& vecBody) { char HeaderBuff[300]; DWORD dwBodySize = (DWORD)vecBody.size(); DWORD dwHeaderSize = (DWORD)sprintf_s(HeaderBuff, "Cache-Control: no-store\r\n" "Content-Type: application/octet-stream\r\n" "Content-Length: %d\r\n\r\n", dwBodySize); if(!pECB->ServerSupportFunction(pECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER,NULL,&dwHeaderSize,(LPDWORD)HeaderBuff)) { return HSE_STATUS_ERROR; } if (dwBodySize > 0) { if(!pECB->WriteClient(pECB->ConnID,(LPVOID)&vecBody[0],&dwBodySize,0)) { return HSE_STATUS_ERROR; } } return HSE_STATUS_SUCCESS; }
- ISAPI之Http返回不同的数据类型
- 返回不同的HTTP状态码都表示什么?
- HTTP请求返回状态码的不同含义
- 字符串不同存储形式代表的不同数据类型 及 返回值为引用要十分注意
- ISAPI 返回 浏览器 图片 我的第一个技术BLOG
- web服务器 http请求返回 不同返回码的 对应 语意
- 不同数据类型的计算
- 不同数据类型的清洗
- 《图解http》之返回结果的http状态码
- HVR之表数据类型长度不同的同步
- 不同平台上的不同数据类型
- ISAPI之Hello world
- 基本数据类型与引用数据类型的不同
- http网络请求 返回不同的statusCode(状态码)500,200,400等
- JavaScript不同数据类型的转换
- C++不同数据类型的转换
- 不同数据类型之间的运算
- 不同数据类型的相互转换
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- oracle物化视图学习笔记
- Linux驱动程序设计之三---Linux字符驱动程序(下)
- 智力题——14.64匹赛马问题
- 大白菜傻瓜式u盘装机
- ISAPI之Http返回不同的数据类型
- Linux驱动程序设计之四---并发和竞态
- 内核并发控制---读写自旋锁 (来自网易)
- c++中#include<iostream>、<iostream.h>区别
- 关于HOOK WINAPI函数
- Warning: Multiple build commands for output file /xxx
- SVM入门(五)线性分类器的求解——问题的描述Part2
- c#下实现ping操作
- 如何进行js的debug