اتصال به وب سرویس soap در اندروید

shape
shape
shape
shape
shape
shape
shape
shape
api-android

آموزش اتصال به SOAP API در اندروید

در این مطلب میخواهیم در مورد اتصال به وب سرویس soap در اندروید توضیح دهیم.

وب سرویس soap چیست ؟

SOAP یک پروتکل ساده بر پایه XML برای نمایش و بسته بندی اطلاعات است که به برنامه های مختلف امکان تعریف و ارسال اطلاعات با استفاده از پروتکل HTTP را می دهد. کاربرد اصلی SOAP بعنوان پرتکل استاندارد برای انتقال پیغام در وب سرویس ها است. به زبان ساده تر SOAP پرتکل دسترسی به وب سرویس ها است.

این وب سرویس تقریبا در حال منسوخ شدن است و اکثرا از وب سرویس Restfull به دلیل سرعت و سهولت پیاده سازی استفاده می کنند.

در ادامه یک نمونه مثال کاربردی از استفاده soap برای اتصال به وب را برای شما عزیزان شرح خواهیم داد.
در این مثال از api آماده سایت W3SCHOOLS استفاده میکنیم.

برای ارتباط با وب سرویس soap در اندروید مراحل زیر را انجام دهید :

کد های زیر را داخل فایل main.xml کپی نمایید :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:text="Celsius to Farenheit"
        android:textSize="30dp" />
 
    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:numeric="integer"
        android:singleLine="true" />
 
    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="Convert to Farenheit" />
 
    <TextView
        android:id="@+id/tv_result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="" android:textSize="26dp"/>
 
</LinearLayout>

در ابتدای کلاس webservice.java مقادیر زیر را تعریف کنید

private final String NAMESPACE = "http://www.w3schools.com/webservices/";
private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
private final String SOAP_ACTION = "http://www.w3schools.com/webservices/CelsiusToFahrenheit";
private final String METHOD_NAME = "CelsiusToFahrenheit";
private String TAG = "PGGURU";
private static String celcius;
private static String fahren;
Button b;
TextView tv;
EditText et;

در متد onCreate کلاس فوق کد های زیر را قرار دهید :

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //Celcius Edit Control
    et = (EditText) findViewById(R.id.editText1);
    //Fahrenheit Text control
    tv = (TextView) findViewById(R.id.tv_result);
    //Button to 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 control is not empty
            if (et.getText().length() != 0 && et.getText().toString() != "") {
                //Get the text control value
                celcius = et.getText().toString();
                //Create instance for AsyncCallWS
                AsyncCallWS task = new AsyncCallWS();
                //Call execute 
                task.execute();
            //If text control is empty
            } else {
                tv.setText("Please enter Celcius");
            }
        }
    });
}

در ادامه کلاس داخلی AsyncCallWS () را در webservice.java تعریف نمایید :

private class AsyncCallWS extends AsyncTask<String, Void, Void> {
        @Override
        protected Void doInBackground(String... params) {
            Log.i(TAG, "doInBackground");
            getFahrenheit(celcius);
            return 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");
        }
 
    }

و در پایان متد getFahrenheit را که وب سرویس ما را call می کند
در کلاس قراردهید :

public void getFahrenheit(String celsius) {
    //Create request
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    //Property which holds input parameters
    PropertyInfo celsiusPI = new PropertyInfo();
    //Set Name
    celsiusPI.setName("Celsius");
    //Set Value
    celsiusPI.setValue(celsius);
    //Set dataType
    celsiusPI.setType(double.class);
    //Add the property to 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 call object
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
 
    try {
        //Invole web service
        androidHttpTransport.call(SOAP_ACTION, envelope);
        //Get the response
        SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
        //Assign it to fahren static variable
        fahren = response.toString();
 
    } catch (Exception e) {
        e.printStackTrace();
    }
}

در فایل manifest برنامه مجوز اینترنت را بدهید:

<uses-permission android:name="android.permission.INTERNET" />

وب سرویس در اندروید

در این مطلب در مورد اتصال به وب سرویس soap در اندروید توضیح دادیم در مطالب بعدی بیشتر این موارد توضیح خواهیم داد

منبع

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *