Tuesday 15 April 2014

web services - how to work with soap webservice in android -



web services - how to work with soap webservice in android -

i'm new user in android. want work soap webservice. found illustration don't work me :-(

it's url of webservice : http://parsnerkh.com/webservice/server.wsdl?

and methode name : cats

and output : cat1,cat2,...

it's test webservice php : http://parsnerkh.com/webservice/test-cats.php

please help me.

i utilize code :

import android.os.asynctask; import android.os.bundle; import android.app.activity; import org.ksoap2.soapenvelope; import org.ksoap2.serialization.propertyinfo; import org.ksoap2.serialization.soapobject; import org.ksoap2.serialization.soapprimitive; import org.ksoap2.serialization.soapserializationenvelope; import org.ksoap2.transport.httptransportse; import com.example.webserviceactivity.r; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class mainactivity extends activity { private final string namespace = "urn:appstore"; private final string url = "http://parsnerkh.com/webservice/helloserverwsdl.php"; private final string soap_action = "action:urn:appstore/appstoreporttype/catsrequest"; private final string method_name = "cats"; private string tag = "pgguru"; private static string celcius; private static string fahren; button b; textview tv; edittext et; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); //celcius edit command et = (edittext) findviewbyid(r.id.edittext1); //fahrenheit text command tv = (textview) findviewbyid(r.id.tv_result); //button trigger web service invocation b = (button) findviewbyid(r.id.button1); //button click listener b.setonclicklistener(new onclicklistener() { public void onclick(view v) { //check if celcius text command not empty if (et.gettext().length() != 0 && et.gettext().tostring() != "") { //get text command value celcius = et.gettext().tostring(); //create instance asynccallws asynccallws task = new asynccallws(); //call execute task.execute(); //if text command empty } else { tv.settext("please come in celcius"); } } }); } public void getfahrenheit(string celsius) { //create request soapobject request = new soapobject(namespace, method_name); //property holds input parameters /*propertyinfo celsiuspi = new propertyinfo(); //set name celsiuspi.setname("celsius"); //set value celsiuspi.setvalue(celsius); //set datatype celsiuspi.settype(double.class); //add property request object request.addproperty(celsiuspi);*/ //create envelope soapserializationenvelope envelope = new soapserializationenvelope( soapenvelope.ver11); envelope.dotnet = true; //set output soap object envelope.setoutputsoapobject(request); //create http phone call object httptransportse androidhttptransport = new httptransportse(url); seek { //invole web service androidhttptransport.call(soap_action, envelope); //get response soapprimitive response = (soapprimitive) envelope.getresponse(); //assign fahren static variable fahren = response.tostring(); } grab (exception e) { log.e("ads","ad"); e.printstacktrace(); } } private class asynccallws extends asynctask<string, void, void> { @override protected void doinbackground(string... params) { log.i(tag, "doinbackground"); getfahrenheit(celcius); homecoming null; } @override protected void onpostexecute(void result) { log.i(tag, "onpostexecute"); tv.settext(fahren + "° f"); } @override protected void onpreexecute() { log.i(tag, "onpreexecute"); tv.settext("calculating..."); } @override protected void onprogressupdate(void... values) { log.i(tag, "onprogressupdate"); } }

and recive error :

10-08 22:09:24.536: w/system.err(21468): org.xmlpull.v1.xmlpullparserexception: expected: end_tag {http://schemas.xmlsoap.org/soap/envelope/}body (position:end_tag </{http://schemas.xmlsoap.org/soap/envelope/}soap-env:fault>@2:209 in java.io.inputstreamreader@418ea258) 10-08 22:09:24.546: w/system.err(21468): @ org.kxml2.io.kxmlparser.require(kxmlparser.java:2046) 10-08 22:09:24.546: w/system.err(21468): @ org.ksoap2.soapenvelope.parse(soapenvelope.java:138) 10-08 22:09:24.546: w/system.err(21468): @ org.ksoap2.transport.transport.parseresponse(transport.java:63) 10-08 22:09:24.556: w/system.err(21468): @ org.ksoap2.transport.httptransportse.call(httptransportse.java:100) 10-08 22:09:24.556: w/system.err(21468): @ com.prgguru.android.mainactivity.getfahrenheit(mainactivity.java:85) 10-08 22:09:24.556: w/system.err(21468): @ com.prgguru.android.mainactivity$asynccallws.doinbackground(mainactivity.java:101) 10-08 22:09:24.556: w/system.err(21468): @ com.prgguru.android.mainactivity$asynccallws.doinbackground(mainactivity.java:1) 10-08 22:09:24.556: w/system.err(21468): @ android.os.asynctask$2.call(asynctask.java:287) 10-08 22:09:24.556: w/system.err(21468): @ java.util.concurrent.futuretask.run(futuretask.java:234) 10-08 22:09:24.556: w/system.err(21468): @ android.os.asynctask$serialexecutor$1.run(asynctask.java:230) 10-08 22:09:24.556: w/system.err(21468): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1080) 10-08 22:09:24.556: w/system.err(21468): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:573) 10-08 22:09:24.556: w/system.err(21468): @ java.lang.thread.run(thread.java:856)

use ksoap library consume soap webservice in android. follow below tutorial, has nice illustration consume soap service using ksoap lib. http://code.tutsplus.com/tutorials/consuming-web-services-with-ksoap--mobile-21242

android web-services soap wsdl

No comments:

Post a Comment