我正在尝试使用JSON作为格式在SoapUI 5.0中测试POST请求。
如果我使用Postman,它工作正常,但如果我尝试在SoapUI中完成相同的操作,我只会得到一个似乎没有正确编码的垃圾JSON响应。 根据响应标题,一切都必须正常(200 OK状态,正确的内容长度),它只是没有正确显示。
我发现它与编码有关,所以我尝试在请求标头中设置Content-Type: application/json, charset=UTF-8
,并设置"编码"请求属性中的属性为" UTF-8"。
仍然是同样的垃圾回复。
有什么想法吗?
答案 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
q
值0
:Accept-Encoding: gzip;q=0
或Accept-Encoding: gzip;q=0, identity; q=1.0
是不可接受的用:Dump File
如果你评论这不适合你,可能是因为你的WS忽略了这个标题,你可以尝试使用Groovy脚本测试步骤自己解压缩响应,并采用以下解决方法:
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()
属性:{{1}}