Forum Discussion

aknecht's avatar
13 years ago

InvalidDefinitionException when opening https wsdl via proxy

When creating a new project with a https wsdl via an internet proxy an exception occurs.
This happens in version 4.5.1 and 4.5 only.
Version 4.0.1 is working fine.

error log:

2012-07-20 10:05:45,841 ERROR [errorlog] com.eviware.soapui.impl.support.definition.support.InvalidDefinitionException
com.eviware.soapui.impl.support.definition.support.InvalidDefinitionException
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlLoader.loadXmlObject(WsdlLoader.java:138)
at com.eviware.soapui.impl.wsdl.support.xsd.SchemaUtils.getDefinitionParts(SchemaUtils.java:535)
at com.eviware.soapui.impl.wsdl.support.xsd.SchemaUtils.getDefinitionParts(SchemaUtils.java:524)
at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionCache.update(AbstractDefinitionCache.java:97)
at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext$Loader.construct(AbstractDefinitionContext.java:226)
at com.eviware.soapui.support.swing.SwingWorkerDelegator.construct(SwingWorkerDelegator.java:46)
at com.eviware.soapui.support.swing.SwingWorker$2.run(SwingWorker.java:149)
at java.lang.Thread.run(Unknown Source)

2 Replies

  • sralpert's avatar
    sralpert
    Occasional Contributor
    I can confirm that I've seen this as well. Using plain http through my proxy with 4.5.1 works fine.
  • I had the same problem. It happens because soapUI attempts to validate the certificate when using a proxy (as opposed to not using a proxy where no validation is performed). It happens the createLayeredSocket() method calls createSocket() from a default SSLSocketFactory instead of using the SoapUISSLSocketFactory. As a side note the methods used are deprecated in version 4.1.1 of Apache's HTTP Client in favor of http://hc.apache.org/httpcomponents-cli ... pParams%29:
    http://hc.apache.org/httpcomponents-cli ... boolean%29
    http://hc.apache.org/httpcomponents-cli ... boolean%29

    The following patch fixes the problem for me.

    git diff
    diff --git a/src/java/com/eviware/soapui/impl/wsdl/support/http/SoapUISSLSocketFactory.java b/src/java/com/eviware/soapui/impl/wsdl/support/http/SoapUISSLSocketFactory.java
    index d21adb1..16c437e 100644
    --- a/src/java/com/eviware/soapui/impl/wsdl/support/http/SoapUISSLSocketFactory.java
    +++ b/src/java/com/eviware/soapui/impl/wsdl/support/http/SoapUISSLSocketFactory.java
    @@ -265,13 +265,10 @@ public class SoapUISSLSocketFactory extends SSLSocketFactory
    public Socket createLayeredSocket( final Socket socket, final String host, final int port, final boolean autoClose )
    throws IOException, UnknownHostException
    {
    - SSLSocket sslSocket = ( SSLSocket )getSocketFactory().createSocket( socket, host, port, autoClose );
    +
    + SSLSocket sslSocket = ( SSLSocket )sslContext.getSocketFactory().createSocket( socket, host, port, autoClose );
    +
    sslSocket = enableSocket( sslSocket );
    -// if( getHostnameVerifier() != null )
    -// {
    -// getHostnameVerifier().verify( host, sslSocket );
    -// }
    - // verifyHostName() didn't blowup - good!
    return sslSocket;
    }
    }