On Thursday, November 03, 2011 6:06:25 PM Miten Mehta wrote:
> Hi,
> 
> I am having difficulty in passing paramter to web serivce.  Please see my
> details of web service below.  I see web service method getting invoked but
> payload is not correctly being set for method parameter.  I am using cxf
> 2.2.3.

I would strongly suggest updating to a newer version of CXF.  There has been a 
lot of fixes in these areas since then and the issue may already be solved.

That said, the request doesn't match the WSDL.  You have:
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

and:
<xsd:element name="Greeter" nillable="true" type="xsd:string" />

Thus, the request would just look like:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
   <soap:Body xmlns="http://xml.ms.com/ns/myhello/greeter";>
     <Greeter>Mitenm</Greeter>
   </soap:Body>
</soap:Envelope>


Dan



> 
> wsd:
> --------------------------------------
>   <?xml version="1.0" ?>
>  <wsdl:definitions name="GreeterService" targetNamespace="
> http://xml.ms.com/ns/myhello/greeter"; xmlns:ns1="
> http://schemas.xmlsoap.org/soap/http"; xmlns:soap="
> http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns="
> http://xml.ms.com/ns/myhello/greeter"; xmlns:wsdl="
> http://schemas.xmlsoap.org/wsdl/"; xmlns:xsd="
> http://www.w3.org/2001/XMLSchema";>
>  <wsdl:types>
>  <xsd:schema attributeFormDefault="unqualified"
> elementFormDefault="qualified" targetNamespace="
> http://xml.ms.com/ns/myhello/greeter"; xmlns:tns="
> http://xml.ms.com/ns/myhello/greeter"; xmlns:xsd="
> http://www.w3.org/2001/XMLSchema";>
>   <xsd:element name="Greeter" nillable="true" type="xsd:string" />
>   <xsd:element name="GreeterResponse" nillable="true" type="xsd:string" />
>   </xsd:schema>
>   </wsdl:types>
>  <wsdl:message name="Greeter">
>   <wsdl:part element="tns:Greeter" name="request" />
>   </wsdl:message>
>  <wsdl:message name="GreeterResponse">
>   <wsdl:part element="tns:GreeterResponse" name="GreeterResponse" />
>   </wsdl:message>
>  <wsdl:portType name="Greeter">
>  <wsdl:operation name="Greeter">
>   <wsdl:input message="tns:Greeter" name="Greeter" />
>   <wsdl:output message="tns:GreeterResponse" name="GreeterResponse" />
>   </wsdl:operation>
>   </wsdl:portType>
>  <wsdl:binding name="GreeterServiceSoapHttpBinding" type="tns:Greeter">
>   <soap:binding style="document" transport="
> http://schemas.xmlsoap.org/soap/http"; />
>  <wsdl:operation name="Greeter">
>   <soap:operation soapAction="" style="document" />
>  <wsdl:input name="Greeter">
>   <soap:body use="literal" />
>   </wsdl:input>
>  <wsdl:output name="GreeterResponse">
>   <soap:body use="literal" />
>   </wsdl:output>
>   </wsdl:operation>
>   </wsdl:binding>
>  <wsdl:service name="GreeterService">
>  <wsdl:port binding="tns:GreeterServiceSoapHttpBinding" name="GreeterPort">
>   <soap:address location="
> http://localhost:8080/MyHello6/services/greeterService"; />
>   </wsdl:port>
>   </wsdl:service>
>   </wsdl:definitions>
> 
> 
> Greeter.java
> -----------------
> package myhello;
> 
> import javax.jws.WebMethod;
> import javax.jws.WebParam;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> 
> import org.apache.cxf.interceptor.InInterceptors;
> 
> @WebService(targetNamespace = Greeter.NS_URI)
> @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
> @InInterceptors(interceptors =
> "org.apache.cxf.interceptor.LoggingInInterceptor")
> public class Greeter {
> 
>     public static final String NS_URI = "
> http://xml.ms.com/ns/myhello/greeter";;
> 
>     @WebMethod(operationName = "Greeter")
>     public String greeter(@WebParam(targetNamespace = NS_URI,
> partName="request")String request) {
>         return "Hello, " + request;
>     }
> }
> 
> running client using curl
> -----------------------------------
> curl -d "`cat a.xml`"
> http://172.18.33.222:8080/MyHello6/services/greeterService
> <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Body><GreeterR
> esponse xmlns="http://xml.ms.com/ns/myhello/greeter";>Hello,
>     </GreeterResponse></soap:Body></soap:Envelope>
> 
> 
> Here is snippet from java logs of web service.
> Payload:
> ---------------------------
> ID: 1
> Address: /MyHello6/services/greeterService
> Encoding: ISO-8859-1
> Content-Type: application/x-www-form-urlencoded
> Headers: {x-bluecoat-via=[9734D0704E62AED2],
> content-type=[application/x-www-form-urlencoded], connection=[Keep-Alive],
> via=[1.1 pabcgw04], host=[172.18.33.222:8080],
> x-forwarded-for=[172.21.211.138], content-length=[261],
> user-agent=[curl/7.10.6 (i386-redhat-linux-gnu) libcurl/7.10.6
> OpenSSL/0.9.7a ipv6 zlib/1.1.4],
> Content-Type=[application/x-www-form-urlencoded], Accept=[image/gif,
> image/x-xbitmap, image/jpeg, image/pjpeg, */*], pragma=[no-cache]}
> Payload: <?xml version="1.0" encoding="UTF-8"?>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>   <soap:Body xmlns="http://xml.ms.com/ns/myhello/greeter";>
>     <Greeter>
>       <request>Mitenm</request>
>     </Greeter>
>   </soap:Body>
> </soap:Envelope>
> --------------------------------------
> 
> 
> Regards,
> 
> Miten Mehta
-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to