在SSL url上运行空手道时,如何解决'ZLIB输入流的意外结束'错误

问题描述 投票:1回答:2

我正在使用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,而不会出现任何问题。有什么我想念的吗?

java ssl apache-httpclient-4.x karate
2个回答
0
投票

它可能很简单,您忘记了将URL切换为https://,请进行检查。

否则,如果没有更多数据,我很难说出来。如果找不到丢失的内容,请执行以下过程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

编辑:在我们获得更多详细信息之后,这似乎是强密码设置的问题-请参考:https://github.com/intuit/karate/issues/672#issuecomment-461364938

除非您可以给我们一种复制方法,否则您必须自己弄清楚这一点-确保新文件的权限确定,客户端和服务器之间的SSL兼容性很好,等等。


0
投票

经过几个月的努力,解决方案源于我需要对Java和空手道项目进行的几处更改。为了澄清,我在服务器上使用了自签名证书。

  1. 使用keytool将自签名证书导入我的密钥库
  2. 向JAVA_HOME添加了无限强度的Java Cryptography Extensioninstallation steps
  3. 在karate-config.js文件中,添加了以下内容:

    karate.configure('ssl', { trustAll: true, algorithm: "TLSv1.2" });

  4. 在pom.xml中,我将Http客户端依赖项从karate-apache更改为karate-jersey

经过大量的试验和错误,我终于使它起作用,我意识到某些步骤可能与所有步骤都不相关,但步骤4肯定可以阻止意外的EOF问题。

© www.soinside.com 2019 - 2024. All rights reserved.