简体   繁体   中英

web service in android/eclipse

I need to consume a web service from android/eclipse by soap method.

ie., i have to give an input and show an appropriate result from the web service as per the users input.How to do this?

java class

public class Demo_webserviceActivity extends Activity
{ 
/** Called when the activity is first created. */

   private static String NAMESPACE = "http://tempuri.org/";
   private static String METHOD_NAME = "GetName";
    private static String SOAP_ACTION = "http://tempuri.org/GetName";
    private static String URL = "http://122.248.240.105:234/Service1.asmx";

   Button btnFar;
   EditText txtFar,txtCel;


   @Override
   public void onCreate(Bundle savedInstanceState)
   {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   btnFar = (Button)findViewById(R.id.btnFar);

   txtFar = (EditText)findViewById(R.id.txtFar);
   txtCel = (EditText)findViewById(R.id.txtCel);

   btnFar.setOnClickListener(new View.OnClickListener()
   {

   public void onClick(View v)
   {
     //Initialize soap request + add parameters
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);       

     //Use this to add parameters
     request.addProperty("Fahrenheit",txtFar.getText().toString());

     //Declare the version of the SOAP request
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

     envelope.setOutputSoapObject(request);
     envelope.dotNet = true;

     try 
     {
         HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

         //this is the actual part that will call the webservice
         androidHttpTransport.call(SOAP_ACTION, envelope);

         // Get the SoapResult from the envelope body.
         SoapObject result = (SoapObject)envelope.bodyIn;

         if(result != null)
         {
          //Get the first property and change the label text
           txtCel.setText(result.getProperty(0).toString());
         }
         else
         {
           Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_SHORT).show();
         }
    }
    catch (Exception e)
    {
       e.printStackTrace();
       }
     }
       });
    } 
 }

web method

public class GetName 
{
public String GetName(String Fahrenheit){
    return(Fahrenheit);
}
}

logcat

06-12 17:40:00.322: W/InputManagerService(59): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@44f60478 (uid=10040 pid=345)
 06-12 17:40:00.352: W/IInputConnectionWrapper(345): showStatusIcon on inactive InputConnection
 06-12 17:40:07.292: D/AndroidRuntime(352): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
06-12 17:40:07.292: D/AndroidRuntime(352): CheckJNI is ON
06-12 17:40:07.477: D/AndroidRuntime(352): --- registering native functions ---
06-12 17:40:08.062: D/AndroidRuntime(352): Shutting down VM
06-12 17:40:08.062: D/dalvikvm(352): Debugger has detached; object registry had 1 entries
06-12 17:40:08.102: I/AndroidRuntime(352): NOTE: attach of thread 'Binder Thread #3' failed
06-12 17:40:08.502: D/AndroidRuntime(360): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
06-12 17:40:08.502: D/AndroidRuntime(360): CheckJNI is ON
06-12 17:40:08.633: D/AndroidRuntime(360): --- registering native functions ---
06-12 17:40:09.152: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.demo.webser/.Demo_webserviceActivity }
06-12 17:40:09.222: D/AndroidRuntime(360): Shutting down VM
06-12 17:40:09.222: D/dalvikvm(360): Debugger has detached; object registry had 1 entries
06-12 17:40:09.252: I/AndroidRuntime(360): NOTE: attach of thread 'Binder Thread #3' failed

Thanks a lot

You should use SoapPrimitive results = (SoapPrimitive)envelope.getResponse(); instead of SoapObject result = (SoapObject)envelope.bodyIn; because your webservice is returning a string not object .

You are going in right direction ie The code you are written in android is right.Just make sure that soap action , Method , URl and namespace you are written is right. If you have any doubts regarding this or any other doubts you can write me.

Here basic android tutorial to access web service in android basic ksoap android tutorial

and for creating webservice in java use this Tutorial How to create java based web service

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM