我正在使用Karate进行Web服务测试,并且在向SSL网址发出请求时遇到问题。我收到以下错误:
ERROR com.intuit.karate-java.lang.RuntimeException:java.io.EOFException:ZLIB输入流的意外结束
我通过调用另一个类来生成请求数据,并将该数据传递给请求,如下面的代码片段所示。
在karate-config.js中,我添加了karate.configure('ssl',true)和所有其他字符串值的变体,都无济于事。
我正在使用maven 3.5.3在jdk jdk1.8.0_171上运行空手道版本0.9.0
* def data = Java.type('mdmtests.PersonData').insert('<abs:PersonDetails>', core, queryFields)
* configure headers = { Content-Type: 'text/xml; charset=UTF-8', Keep-Alive: 'timeout=10, max=1000'}
Given request data
When soap action '"document/http://siebel.com/CustomUI:..."'
Then status 200
* xml soapResponseXml = response
Then match soapResponseXml /Envelope/Body/ListOfPerson/PersonDetails/IdentificationNo == person.SOC_SECURITY_NUM
当我在未启用SSL的情况下将同一方案运行到另一台服务器上时,请求已成功发送,并且没有收到错误消息。此外,我可以使用SOAP UI将请求发送到启用SSL的url,而不会出现任何问题。有什么我想念的吗?
它可能很简单,您忘记了将URL切换为https://
,请进行检查。
否则,如果没有更多数据,我很难说出来。如果找不到丢失的内容,请执行以下过程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue
编辑:在我们获得更多详细信息之后,这似乎是强密码设置的问题-请参考:https://github.com/intuit/karate/issues/672#issuecomment-461364938
除非您可以给我们一种复制方法,否则您必须自己弄清楚这一点-确保新文件的权限确定,客户端和服务器之间的SSL兼容性很好,等等。
经过几个月的努力,解决方案源于我需要对Java和空手道项目进行的几处更改。为了澄清,我在服务器上使用了自签名证书。
在karate-config.js文件中,添加了以下内容:
karate.configure('ssl', { trustAll: true, algorithm: "TLSv1.2" });
在pom.xml中,我将Http客户端依赖项从karate-apache更改为karate-jersey
经过大量的试验和错误,我终于使它起作用,我意识到某些步骤可能与所有步骤都不相关,但步骤4肯定可以阻止意外的EOF问题。