Hi christian110011,
for kSOAP, you have to do something like this :
// you have to download ksoap for j2me and extend it's
org.ksoap2.transport.Transport and implement ServiceConnection, coz
it is built
// for j2me not Android, you can eaisly find these two on other android group
Thread t = new Thread()
{
private static final String SOAP_ACTION
= "addition";
private static final String METHOD_NAME
= "addition";
private static final String NAMESPACE =
"http://ws.apache.org/axis2";
// This is for service
deployed on Tomcat, for JBOSS Android is not working on my emulator
private static final String URL =
"http://yourIP:8080/Axis2ServiceServer/services/CalcService";
Integer a = null;
Integer b = null;
@Override
public void run()
{
String stA = ((EditText)
findViewById(R.id.EditText01)).getText().toString();
String stB = ((EditText)
findViewById(R.id.EditText02)).getText().toString();
SoapSerializationEnvelope
envelope = null;
try
{
a =
Integer.valueOf(stA);
b =
Integer.valueOf(stB);
SoapObject request =
new SoapObject(NAMESPACE,METHOD_NAME);
request.addProperty("a", a);
request.addProperty("b", b);
envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
AndroidHttpTransport
androidHttpTransport = new
AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
Object result =
envelope.getResponse();
KSoapClient.res =
result.toString();
}
catch (NumberFormatException
nfe)
{
KSoapClient.res = "Only
Integer numbers ";
Log.e("Input Error: ",
nfe.getMessage());
}
catch (SoapFault sf)
{
Log.e("Service Response
Error, "+ sf.faultcode+":",
sf.faultstring);
}
catch (IOException ioe)
{
Log.e("Service Response
Error: ", ioe.getMessage());
}
catch (XmlPullParserException
xppe)
{
Log.e("Service Response
Error: ", xppe.getMessage());
}
}
};
t.start();
And if you like to create your own SOAP Engine(Custom Parser will do),
you may do,
public String serviceResponse(String a , String b)
{
String s=null;
Integer ai = null;
Integer bi = null;
Document doc;
try
{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
ai = Integer.valueOf(a);
bi = Integer.valueOf(b);
doc = parser.parse(new
URL("http://192.168.1.101:8089/axis/Calc.jws?method=add&a="+a+"&b="+b).openConnection().getInputStream());
if(null!=doc.getElementsByTagName("soapenv:Envelope"))
if(null!=doc.getElementsByTagName("soapenv:Body"))
{
if(null!=doc.getElementsByTagName("addReturn"))
{
NodeList nl
=doc.getElementsByTagName("addReturn");
s=nl.item(0).getFirstChild().getNodeValue();
}
else // not working due to IO error
{
if(null!=doc.getElementsByTagName("soapenv:Fault"))
{
s = "Unable to get Service";
}
else
{
}
}
}
} catch (ParserConfigurationException e) {
Log.e("Error", e.getMessage());
} catch (FactoryConfigurationError e) {
Log.e("Error", e.getMessage());
} catch (SAXException e) {
Log.e("Error", e.getMessage());
} catch (MalformedURLException e) {
Log.e("Error", e.getMessage());
} catch (IOException e) {
Log.e("Error", e.getMessage());
}
catch(Exception e)
{
if (ai == null || bi == null) {
s = "Addition service is only for integers!!";
}
}
return s;
On Thu, Oct 16, 2008 at 6:07 PM, christian110011
<[EMAIL PROTECTED]> wrote:
>
> hi all
> does anybody know how to call a soap web service from an android
> application (ie. the android app is the web service client)? which
> approaches are the best? any alternatives?
> thx :-)
> regards, christian
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---