在SoapUI中成功发送POST请求后接收加密的JSON响应

时间:2016-11-18 12:48:51

标签: json rest http-post soapui postman

我正在尝试使用JSON作为格式在SoapUI 5.0中测试POST请求。

如果我使用Postman,它工作正常,但如果我尝试在SoapUI中完成相同的操作,我只会得到一个似乎没有正确编码的垃圾JSON响应。 根据响应标题,一切都必须正常(200 OK状态,正确的内容长度),它只是没有正确显示。

我发现它与编码有关,所以我尝试在请求标头中设置Content-Type: application/json, charset=UTF-8,并设置"编码"请求属性中的属性为" UTF-8"。

仍然是同样的垃圾回复。

有什么想法吗?

Raw Request & Raw Response

1 个答案:

答案 0 :(得分:2)

您的回复采用gzip格式,请参阅回复中的Content-Encoding:gzip http标题。

理论上,SOAPUI必须自动为您解压缩并以纯文本形式显示响应,但似乎并不适合您的情况。我尝试使用一些REST API和响应gzip编码,响应被正确解码。 (我正在使用SOAPUI 5.2.1而不是5.0.0。)

然后可能的解决方法是将当前的http-header accept-encoding : gzip值更改为accept-encoding : identity,以明确告知服务器您希望以纯文本形式显示响应。

如果identity对此WS不起作用,请尝试告知gzip q0Accept-Encoding: gzip;q=0Accept-Encoding: gzip;q=0, identity; q=1.0是不可接受的用:Dump File

如果你评论这不适合你,可能是因为你的WS忽略了这个标题,你可以尝试使用Groovy脚本测试步骤自己解压缩响应,并采用以下解决方法:

  1. 在REST TestRequest Properties中配置import java.io.ByteArrayInputStream import java.io.FileOutputStream import java.io.IOException import java.util.zip.GZIPInputStream def buffer = new byte[1024] // create the zip input stream from your dump file def dumpFilePath = 'C:/temp/' FileInputStream fis = new FileInputStream("${dumpFilePath}/dumpRest.json") // create the instance to ungzip def gzis = new GZIPInputStream(fis) // fileOutputStream for the result def fos = new FileOutputStream("${dumpFilePath}/dumpRestUngizped.json") // decompress content gzis.eachByte(1024){ buf, len -> fos.write(buf,0,len)} // close streams gzis.close() fos.close() 属性:
  2. enter image description here

    1. 创建一个Groovy testStep并使用以下脚本来解压缩转储响应,以便将其作为纯文本:
    2. {{1}}