ColdFusion处理ChannelAdvisor GZIP Webhook:下载与读取方法咨询
处理ChannelAdvisor Webhook的GZIP编码POST内容(ColdFusion)
一、将GZIP内容保存到文件
直接利用getHTTPRequestData().content返回的二进制数据写入文件,不要尝试转成字符串(否则会出现乱码):
<!--- 获取请求的二进制内容 ---> <cfset requestData = getHTTPRequestData()> <!--- 指定保存路径,可根据实际调整 ---> <cfset savePath = expandPath("./webhook_gzip_payload.gz")> <!--- 写入二进制文件 ---> <cfset FileWriteBinary(savePath, requestData.content)>
二、读取并解压GZIP文件
通过Java的GZIP输入流处理文件内容,还原原始POST数据:
<cfset savePath = expandPath("./webhook_gzip_payload.gz")> <!--- 初始化文件输入流和GZIP解压流 ---> <cfset fileStream = CreateObject("java", "java.io.FileInputStream").init(savePath)> <cfset gzipStream = CreateObject("java", "java.util.zip.GZIPInputStream").init(fileStream)> <cfset reader = CreateObject("java", "java.io.BufferedReader").init(CreateObject("java", "java.io.InputStreamReader").init(gzipStream))> <!--- 读取解压后的内容 ---> <cfset payloadContent = ""> <cfset line = reader.readLine()> <cfloop condition="line neq null"> <cfset payloadContent &= line & chr(10)> <cfset line = reader.readLine()> </cfloop> <!--- 关闭流,释放资源 ---> <cfset reader.close()> <cfset gzipStream.close()> <cfset fileStream.close()> <!--- 输出或使用解压后的内容 ---> <cfdump var="#payloadContent#">
内容的提问来源于stack exchange,提问作者Bettina Maria
相关产品推荐
相关产品推荐

