Click here to Skip to main content
Click here to Skip to main content

Step by Step Method to Access Webservice from Android

By , 24 Sep 2010
 

System Requirements

The sections below describe the system and software requirements for developing Android applications using the Android SDK.

Supported Operating Systems

  • Windows XP (32-bit) or Vista (32- or 64-bit)
  • Mac OS X 10.5.8 or later (x86 only)
  • Linux (tested on Linux Ubuntu Hardy Heron)

Supported Development Environments

Eclipse IDE

  • Eclipse 3.4 (Ganymede) or 3.5 (Galileo)

Caution: There are known issues with the ADT plugin running with Eclipse 3.6. Please stay on 3.5 until further notice.

  • Eclipse JDT plugin (included in most Eclipse IDE packages)
  • If you need to install or update Eclipse, you can download it from http://www.eclipse.org/downloads/.

    Several types of Eclipse packages are available for each platform. For developing Android applications, we recommend that you install one of these packages:

  • Eclipse IDE for Java EE Developers
  • Eclipse IDE for Java Developers
  • Eclipse for RCP/Plug-in Developers
  • Eclipse Classic (versions 3.5.1 and higher)
  • JDK 5 or JDK 6 (JRE alone is not sufficient)
  • Android Development Tools plugin (optional)
  • Not compatible with Gnu Compiler for Java (gcj)

Hardware Requirements

The Android SDK requires disk storage for all of the components that you choose to install. The table below provides a rough idea of the disk-space requirements to expect, based on the components that you plan to use.

Component type

Approximate size

Comments

SDK Tools

50 MB

Required.

Android platform (each)

150 MB

At least one platform is required.

SDK Add-on (each)

100 MB

Optional.

USB Driver for Windows

10 MB

Optional. For Windows only.

Samples (per platform)

10M

Optional.

Offline documentation

250 MB

Optional.

Note that the disk-space requirements above are in addition to those of the Eclipse IDE, JDK, or other prerequisite tools that you may need to install on your development computer.

Installing the ADT Plugin for Eclipse

  1. Start Eclipse, then select Help > Install New Software.
  2. In the Available Software dialog, click Add....
  3. In the Add Site dialog that appears, enter a name for the remote site (for example, "Android Plugin") in the "Name" field.

In the "Location" field, enter this URL:

https://dl-ssl.google.com/android/eclipse/

Note: If you have trouble acquiring the plugin, you can try using "http" in the URL, instead of "https" (https is preferred for security reasons).

Click OK.

  1. Back in the Available Software view, you should now see "Developer Tools" added to the list. Select the checkbox next to Developer Tools, which will automatically select the nested tools Android DDMS and Android Development Tools. Click Next.
  2. In the resulting Install Details dialog, the Android DDMS and Android Development Tools features are listed. Click Next to read and accept the license agreement and install any dependencies, then click Finish.
  3. Restart Eclipse.

Configuring the ADT Plugin

Once you've successfully downloaded ADT as described above, the next step is to modify your ADT preferences in Eclipse to point to the Android SDK directory:

  1. Select Window > Preferences... to open the Preferences panel (Mac OS X: Eclipse > Preferences).
  2. Select Android from the left panel.
  3. For the SDK Location in the main panel, click Browse... and locate your downloaded SDK directory.

Click Apply, then OK.

Creating an Android Project

The ADT plugin provides a New Project Wizard that you can use to quickly create a new Android project (or a project from existing code). To create a new project:

  1. Select File > New > Project.
  2. Select Android > Android Project, and click Next.
  3. Select the contents for the project:
    • Enter 'AndroidWSAccess'. This will be the name of the folder where your project is created.
    • Under Contents, select Create new project in workspace. Select your project workspace location.
    • Under Target, select an Android target to be used as the project's Build Target. The Build Target specifies which Android platform you'd like your application built against.

      Unless you know that you'll be using new APIs introduced in the latest SDK, you should select a target with the lowest platform version possible.

      Note: You can change your the Build Target for your project at any time: Right-click the project in the Package Explorer, select Properties, select Android and then check the desired Project Target.

    • Under Properties, fill in all necessary fields.
      • Enter an Application name as 'AndroidWSAccess'. This is the human-readable title for your application — the name that will appear on the Android device.
      • Enter a Package name as 'com.test.android'. This is the package namespace (following the same rules as for packages in the Java programming language) where all your source code will reside.
      • Select Create Activity (optional, of course, but common) and enter a name (give 'FirstAppUI') for your main Activity class.
      • Enter a Min SDK Version. This is an integer that indicates the minimum API Level required to properly run your application. Entering this here automatically sets the minSdkVersion attribute in the <uses-sdk> of your Android Manifest file. If you're unsure of the appropriate API Level to use, copy the API Level listed for the Build Target you selected in the Target tab.
  4. Click Finish.

Tip: You can also start the New Project Wizard from the New icon in the toolbar.

Once you complete the New Project Wizard, ADT creates the following folders and files in your new project:

src/
Includes your stub Activity Java file. All other Java files for your application go here.
<Android Version>/ (e.g., Android 2.2/)

Includes the android.jar file that your application will build against. This is determined by the build target that you have chosen in the New Project Wizard.

gen/

This contains the Java files generated by ADT, such as your R.java file and interfaces created from AIDL files.

assets/
This is empty. You can use it to store raw asset files.
res/
A folder for your application resources, such as drawable files, layout files, string values, etc.
AndroidManifest.xml
The Android Manifest for your project.
default.properties
This file contains project settings, such as the build target. This file is integral to the project, as such, it should be maintained in a Source Revision Control system. It should never be edited manually — to edit project properties, right-click the project folder and select "Properties".

Creating an AVD

An Android Virtual Device (AVD) is a device configuration for the emulator that allows you to model real world devices. In order to run an instance of the emulator, you must create an AVD.

To create an AVD from Eclipse:

  1. Select Window > Android SDK and AVD Manager, or click the Android SDK and AVD Manager icon in the Eclipse toolbar.
  2. In the Virtual Devices panel, you'll see a list of existing AVDs. Click New to create a new AVD.
  3. Fill in the details for the AVD.

    Give it a name, a platform target, an SD card size, and a skin (HVGA is default).

    Note: Be sure to define a target for your AVD that satisfies your application's Build Target (the AVD platform target must have an API Level equal to or greater than the API Level that your application compiles against).

  4. Click Create AVD.

Your AVD is now ready and you can either close the SDK and AVD Manager, create more AVDs, or launch an emulator with the AVD by selecting a device and clicking Start.

Code your FirstAppUI.java class like below:

package com.test.android;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class FirstAppUI extends Activity {

	
	private static final String NAMESPACE = "com.service.ServiceImpl";
	private static final String URL = 
		"http://192.168.202.124:9000/AndroidWS/wsdl/ServiceImpl.wsdl";	
	private static final String SOAP_ACTION = "ServiceImpl";
	private static final String METHOD_NAME = "message";
	
	private static final String[] sampleACTV = new String[] {
	"android", "iphone", "blackberry"
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ArrayAdapter<String> arrAdapter = new ArrayAdapter<String>
		(this, android.R.layout.simple_dropdown_item_1line, sampleACTV);

		AutoCompleteTextView ACTV = (AutoCompleteTextView)findViewById
						(R.id.AutoCompleteTextView01);
		ACTV.setAdapter(arrAdapter);

		SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 		
		SoapSerializationEnvelope envelope = 
			new SoapSerializationEnvelope(SoapEnvelope.VER11); 

		envelope.setOutputSoapObject(request);
		HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

		try {
			androidHttpTransport.call(SOAP_ACTION, envelope);
			SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
			ACTV.setHint("Received :" + resultsRequestSOAP.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}  

Insert AutoCompleteTextView to your res>layout >main.xml as:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
     android:layout_width="fill_parent"     
     android:layout_height="fill_parent"     
     xmlns:android="http://schemas.android.com/apk/res/android">  

     <AutoCompleteTextView     
         android:id="@+id/AutoCompleteTextView01"         
         android:layout_width="wrap_content"         
         android:layout_height="wrap_content"         
         android:hint="This is Hint"         
         android:width="240px" />  

 </LinearLayout>

Insert Internet access permission to your mobile application in AndroidManifest.xml file as:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.test.android"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FirstAppUI"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-sdk android:minSdkVersion="8" />

</manifest> 

ServiceImpl.wsdl:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace=http://service.com 
	xmlns:apachesoap=http://xml.apache.org/xml-soap 
	xmlns:impl="http://service.com" xmlns:intf=http://service.com 
	xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/ 
	xmlns:wsdlsoap=http://schemas.xmlsoap.org/wsdl/soap/ 
	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
  <schema elementFormDefault="qualified" 
      targetNamespace="http://service.com" xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="message">
    <complexType/>
   </element>
   <element name="messageResponse">
    <complexType>
     <sequence>
      <element name="messageReturn" type="xsd:string"/>
     </sequence>
    </complexType>
   </element>
  </schema>
 </wsdl:types>

   <wsdl:message name="messageResponse">
      <wsdl:part element="impl:messageResponse" name="parameters">
      </wsdl:part>
   </wsdl:message>
   <wsdl:message name="messageRequest">
      <wsdl:part element="impl:message" name="parameters">
      </wsdl:part>
   </wsdl:message>
   <wsdl:portType name="ServiceImpl">
      <wsdl:operation name="message">
         <wsdl:input message="impl:messageRequest" name="messageRequest">
       </wsdl:input>
         <wsdl:output message="impl:messageResponse" name="messageResponse">
       </wsdl:output>
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="ServiceImplSoapBinding" type="impl:ServiceImpl">
      <wsdlsoap:binding style="document" 
	transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="message">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="messageRequest">
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output name="messageResponse">
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="ServiceImplService">
      <wsdl:port binding="impl:ServiceImplSoapBinding" name="ServiceImpl">
         <wsdlsoap:address location=
		"http://localhost:9000/AndroidWS/services/ServiceImpl"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

Thanks!

History

  • 24th September, 2010: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Mihira Prasanna
Software Developer Synapsys Ltd, DFCC Bank, Sri Lanka
Sri Lanka Sri Lanka
Researching innovation of software technology.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 1memberPaul Conrad30-May-13 7:06 
QuestionUnfortunately stopped workingmemberMember 993657823-Mar-13 8:57 
QuestionUnfortunately Stopped Working with this code?memberShahbazkhanmd17-Feb-13 2:20 
I tried with this code but its saying "Unfortunately stopped working".
I am using AVD emulator.
Mohammed Shahbaz Khan.

Questioncall web service got e=null exceptionmembersonichanxiao19-Jul-12 22:21 
Questionandroid Webservice error font UTF8memberdaitranthanhhoa18-Jun-12 18:52 
GeneralMy vote of 1memberHai-Binh LE27-May-12 23:05 
QuestionServiceImpl.wsdlmemberYarakam Bharathi23-May-12 21:37 
QuestionI have a web service url rather than a wsdl file.How can i acces thatmemberkiranmatrixlee22-Apr-12 0:28 
GeneralMy vote of 1memberkeret18-Mar-12 6:35 
QuestionWhere to add ServiceImpl.wsdl in android app, help!memberrufj28-Dec-11 2:30 
GeneralMy vote of 5memberMember 82962467-Dec-11 11:00 
QuestionGetting ClassCastException or org.xmlpull.v1.XmlPullParserExceptionmemberharshawardhan.sd15-Nov-11 1:58 
AnswerRe: Getting ClassCastException or org.xmlpull.v1.XmlPullParserExceptionmemberraja.abz11-Sep-12 22:57 
GeneralMy vote of 1memberMichael Ulmann19-Oct-11 16:56 
GeneralMy vote of 5memberazizsurani4-Oct-11 21:16 
GeneralMy vote of 5membermsameera24-Sep-11 6:14 
GeneralMy vote of 3memberlijo011@yahoo.com6-Sep-11 18:58 
QuestionKSOAP_ACTION and NAMESPACE valuememberHoai_Nguyen28-Aug-11 3:26 
AnswerRe: KSOAP_ACTION and NAMESPACE valuememberHoai_Nguyen28-Aug-11 3:34 
Questionjar file locationmemberanjalikulkarni24-Aug-11 2:44 
Generalsend image captured from cameramembersharan kumar14-Jun-11 0:18 
GeneralRe: send image captured from cameramemberozharugold4-Sep-11 16:19 
GeneralWSTL locationmemberMember 78875395-May-11 1:27 
GeneralRe: WSTL locationmemberluiz.srodrigues27-Jul-11 0:05 
GeneralConnect to SQL SERVER DBmemberAdawi5-Apr-11 1:55 
GeneralRe: Connect to SQL SERVER DBmemberMihira Prasanna28-Apr-11 22:57 
GeneralRe: Connect to SQL SERVER DBmemberMihira Prasanna28-Apr-11 23:26 
GeneralRe: Connect to SQL SERVER DBmemberMihira Prasanna27-Jul-11 0:41 
Questionthx a lot man, you were the only one who helped me with this. However PLZ i need your help in serialization of complex type for ksoap2memberchadic16-Mar-11 8:25 
Generalnice article for those who already familiar with the SOAP, please expand with more details of how to test it on localhostmemberdragondad10-Mar-11 4:58 
GeneralMy vote of 3member_learner9-Mar-11 19:43 
QuestionYou need write more about how to use ksoap2-android in the android project ?memberltn61420-Feb-11 3:53 
QuestionHow to use org.ksoap2 ???memberwinzone20-Dec-10 22:38 
AnswerRe: How to use org.ksoap2 ???memberMihira Prasanna21-Dec-10 4:39 
GeneralRe: How to use org.ksoap2 ??? [modified]memberwinzone21-Dec-10 14:43 
GeneralGreat article!memberJose Matos16-Nov-10 20:15 
QuestionKnown issues with 3.6?memberJoeSox24-Sep-10 3:46 
AnswerRe: Known issues with 3.6?memberakbarjinna24-Sep-10 12:19 
GeneralRe: Known issues with 3.6?memberJoeSox24-Sep-10 17:55 
Generalneeds some formatmemberEmilio Garavaglia23-Sep-10 22:47 
GeneralRe: needs some formatmemberakbarjinna24-Sep-10 12:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130617.1 | Last Updated 24 Sep 2010
Article Copyright 2010 by Mihira Prasanna
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid