C++解析http-chunked数据

该博客介绍了如何在C++中解析HTTP Chunked传输的数据,通过读取块大小,跳过回车换行符,并将块内容拼接到一起。主要内容包括对chunked数据的处理方法,特别关注数据的正确提取和有效载荷的合并。
摘要由CSDN通过智能技术生成
chunked 是http传输过程中常用的一种分块手段, 这里是对chunked数据的简易处理方法,主要是拼接block, 去掉块大小和回车信息即可

static ResponseStream *rlib_parse_chunk_data(char *lp_chunk_data, intptr_t nsize)
{
	auto pstream = new ResponseStream(Utility::round_up_8(nsize));
	if (pstream == nullptr) {
		return pstream;
	} //if

	// to small data size, just ignore it
	if (nsize < 16){
		pstream->Write(lp_chunk_data, nsize);
	} else {
		// get chunked data size
		const int crlf        = RLIB_COUNTOF_STR("\r\n");
		int block_size        = 0;		
		LPSTR pDataEnd        = lp_chunk_data + nsize;
		LPSTR pBlockDataBegin = lp_chunk_data, pBlockDataEnd = lp_chunk_data;
		while (pBlockDataBegin < pDataEnd) {
			pBlockDataEnd = strstr(pBlockDataBegin, "\r\n");
			if (pBlockDataEnd == nullptr) {
				trace(!"invalid chunked data");
				break;
			}
			//pBlockDataEnd[0] = '\0';
			block_size = Int32::TryParse(pBlockD
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值