当前位置:  开发笔记 > 后端 > 正文

如何从soapUI响应中提取字节数组?

如何解决《如何从soapUI响应中提取字节数组?》经验,为你挑选了1个好方法。

我正在使用soapUI测试Web服务.其中一个响应如下:

    
   
      
         UEsDBBQACAAIAO1GNToAAAAAAAAAAAAAAAANAAAAc2NyaXB0cy9lbGxza [...] AATAAAAAAAAAAAAAAAAAAGXAAAbGRhcF9ub2RlX2NvbmZpZ3VyYXRpb24vZ2VuZXJhdGVkX2xkaWZfZmlsZXMvX210YXM0X2N4cDQ0NF9yNF9JbXNtb2JpbGUubGRpZlBLAQIUABQACAAIAO1GNTp8eBuZRAEAABMDAAAmAAAAAAAAAAAAAAAAAKJiAABsZGFwX25vZGVfY29uZmlndXJhdGlvbi9lbGxzaC1jb21tYW5kc1BLBQYAAAAABQAFAIgBAAA6ZAAAAAA=
      
   

响应是一个字节数组,应该代表一个zip文件.我怎样才能验证这个?



1> Shonzilla..:

虽然在语义上是正确的,但我相信内森提出的解决方案有点不完整.

我猜他忘了在第1步之前对Base64解码提取的文本.我还会包含一项改进,以便通过使用第三方ZIP实用程序验证临时文件不需要人工干预.

这将转化为访问临时ZIP文件并检查它是否是有效的ZIP文件.因此,实现您的要求的算法将是:

    访问元素Base64编码的文本内容和Base64解码它

    将ZIP原始文本输出到临时文件中,从而创建ZIP文件

    检查临时创建的ZIP文件是否有效

考虑到所有这些,这里是完整的Groovy脚本的样子:

import org.apache.commons.codec.binary.Base64

// Step 1: Access element Base64-encoded text content and Base64 decode it
String tempZipFilename = "temp.zip"
def textBase64 = context.expand(
  '${Step#Request#//ns2:getInputConfigFilesResponse[1]/return[1]}' )
def b64 = new Base64()
def zipTextBytes = b64.decode(textBase64.getBytes())

// Step 2: Output ZIP raw text into a temporary file
def zipFile = new java.io.File(tempZipFilename)
FileOutputStream fos = new java.io.FileOutputStream(zipFile)
fos.write( zipTextBytes )
fos.flush()
fos.close()
log.info "Temporary ZIP file stored as: ${zipFile.getCanonicalPath()}"

// Step 3: Check if the temporarily created ZIP file is valid
boolean responseValid
try {
  zipFile = new java.util.zip.ZipFile(tempZipFilename)
  responseValid = true
  log.info "Number of files in the ZIP file: ${zipFile.size()}"
} catch (java.util.zip.ZipException e) {
  responseValid = false
  log.error "The received response contains a bad ZIP"
}
log.info "Web service response is " + (responseValid ? "valid" : "invalid")

如果这对你有用,请告诉我.:-)

干杯!
Shonzilla

ps我建议在这个问题上添加"ZIP"标签,以便人们可以更容易地找到一个解决方案来处理嵌入在这里的Groovy的ZIP.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有