WS-I requires that for RPC/Literal, the accessor part elements ("return" in
your example) be unqualified. However, your server is sending it back
qualified.
You can use the transformation feature:
http://cxf.apache.org/docs/transformationfeature.html
to drop the namespace from that element which should allow the rest of the CXF
processing to work.
Dan
On Aug 14, 2012, at 6:41 AM, Thorsten Kunz <[email protected]> wrote:
> Hi,
>
> I have a problem when I try to call a WebService with Apache CXF. The
> wsdl2java generation works just fine and sending the request also works ok.
> But when the answer is parsed and Exception is thrown. I am using CXF
> version 2.6.1.
>
> The WSDL can be found here:
> http://webservice.broadcloudmeeting.com/perl/ilinc/api/webservice/ilinc-api.pl?ADMIN-WSDL
>
> Request:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> <soap:Body>
> <ns1:VerifyClientSubdomain xmlns:ns1="urn:iLincAPI">
> <Authorization xmlns:ns2="urn:iLincAPI">
> <ns2:APIVersion>[removed]</ns2:APIVersion>
> <ns2:ClientID>[removed]</ns2:ClientID>
> <ns2:AuthorizedUserName>[removed]</ns2:AuthorizedUserName>
> <ns2:AuthorizedPassword>[removed]</ns2:AuthorizedPassword>
> </Authorization>
> <parameters xmlns:ns2="urn:iLincAPI">
> <ns2:Subdomain>[removed]</ns2:Subdomain>
> </parameters>
> </ns1:VerifyClientSubdomain>
> </soap:Body>
> </soap:Envelope>
>
> Response:
> <?xml version="1.0" encoding="UTF-8"?>
> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> <soap:Body>
> <VerifyClientSubdomainResponse xmlns="urn:iLincAPI">
> <return>
> <ErrorID xsi:type="xsd:int">0</ErrorID>
> <DomainExists xsi:type="xsd:string">[removed]</DomainExists>
> <ErrorStr xsi:type="xsd:string" />
> <Reference xsi:nil="true" />
> </return>
> </VerifyClientSubdomainResponse>
> </soap:Body>
> </soap:Envelope>
>
> Exception:
> org.apache.cxf.interceptor.Fault: Found element {urn:iLincAPI}return but
> could not find matching RPC/Literal part
> at
> org.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(RPCInInterceptor.java:171)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:658)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2139)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2022)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1947)
> at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123)
> at $Proxy39.verifyClientSubdomain(Unknown Source)
> at Test.test(Test.java:21)
>
> Googling for the error seems to indicate that the WebService is not WS-I
> Basic Profile compliant but I don't exactly get why. Is there and way I can
> make this work? The problem is I have no influence on the server side so I
> can't do anything about how the response looks like.
>
> Any suggestions?
>
> Thanks a lot
--
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com