Hi Bansal, There is a basic problem here as you are trying to pass the parameters also with your endpoint address. Change your code to the following and try :
EndpointReference targetEPR = new
EndpointReference("http://localhost:8080/Axis2/rest/servicename/methodname");
Options options = new Options();
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setProperty(Constants.Configuration.ENABLE_REST,
Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.HTTP_METHOD,Constants.Configuration.HTTP_METHOD_GET);
ServiceClient client = new ServiceClient();
client.setOptions(options);
OMFactory factory = OMAbstractFactory.getOMFactory();
OMElement payload factory.createOMElement(methodName, null);
OMElement parameter = factory.createOMElement("param0", null, methodName);
parameter.setText("47");
OMElement result= call.sendReceive(payload);
The reason we want to do like this is we do everything the way as you
invoke with SOAP. Just a simple switch turns that to a REST call. Please
do not use RESTCall class anymore, its crap :).
-- Chinthaka
P.S. : I didn't write this code in an IDE. Compile errors are expected
features of this code ;)
Bansal, Vimal wrote:
> Hi All,
> I am trying to invoke my webservice which having a method take one
> parameter using REST my client code snippets is
>
>
> public class RestClient
> {
>
> private static EndpointReference targetEPR = new
> EndpointReference("http://localhost:8080/Axis2/rest/servicename/methodname?param0=47");
>
> public static void main(String[] args) {
> try {
>
> RESTCall call = new RESTCall();
> Options options = new Options();
> options.setTo(targetEPR);
> options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> options.setProperty(Constants.Configuration.ENABLE_REST,
> Constants.VALUE_TRUE);
>
> options.setProperty(Constants.Configuration.HTTP_METHOD,Constants.Configuration.HTTP_METHOD_GET);
> call.setOptions(options);
> OMElement result= call.sendReceive();
> System.out.println(result.getFirstElement().getText());
> }
> catch (AxisFault axisFault) {
> System.out.println(axisFault+":"+axisFault.getMessage());
> }
> catch (Exception axisFault) {
> System.out.println(axisFault+":"+axisFault.getMessage());
> }
> }
> I am able to call the method by browser by the same url that has-been
> passed as a argument in EndPointReference()
> but when I am calling this by client I am getting following error in
> log file.
>
>
> org.apache.axis2.AxisFault: For input string: "47?"; nested exception
> is:
> java.lang.NumberFormatException: For input string: "47?"; nested
> exception is:
> org.apache.axis2.AxisFault: For input string: "47?"; nested exception
> is:
> java.lang.NumberFormatException: For input string: "47?"
> at
> org.apache.axis2.transport.http.util.RESTUtil.processGetRequest(RESTUtil.java:141)
> at
> org.apache.axis2.transport.http.AxisRESTServlet.doGet(AxisRESTServlet.java:36)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
> at java.lang.Thread.run(Thread.java:534)
>
> as you can sea the "?" is add automaticaly I am not able to find why it is
> so is this any bug in axis2 or I am missing
> something.
> Thanks
> Vimal Kumar Bansal
signature.asc
Description: OpenPGP digital signature
