- Качаем ksoap2.
- В build.gradle пишем
dependencies {
...
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
...
}
- В манифест добавляем
<uses-permission android:name="android.permission.INTERNET" />
- Главный класс выглядит так
package com.example.jaroslavh.ws1; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.ksoap2.HeaderProperty; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private static final String NAMESPACE = "http://www.w3.org/2001/XMLSchema"; private static final String METHOD_NAME = "echo"; //метод веб-сервиса private static final String SOAP_ACTION = "tns:swtrade-wms#wms_tcd:echo"; // берем из xml страницы веб-сервиса private static String URL = "http://192.168.0.96/veres/uk_UA/ws/wms_tcd"; // адрес веб-сервиса private TextView tv; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.TextView); // на форме поле вывода btn = (Button) findViewById(R.id.button); // на форме кнопка btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { new MyTask().execute(); } }); } public class MyTask extends AsyncTask<Void, Void, String> { ProgressDialog progress; String response = ""; public void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(Void... arg0) { final SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("text", "jaroslav"); // веб-сервис принимает один параметр text в виде строки final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); envelope.dotNet = true; try { List<HeaderProperty> headerList = new ArrayList<HeaderProperty>(); headerList.add(new HeaderProperty("Authorization", "Basic " + org.kobjects.base64.Base64.encode("admin:123".getBytes()))); // авторизация на веб-сервисе HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.call(SOAP_ACTION, envelope, headerList); SoapObject result = (SoapObject) envelope.getResponse(); response = result.toString(); } catch (IOException e) { response = e.toString(); } catch (XmlPullParserException e) { response = e.toString(); } return response; } @Override public void onPostExecute(String res) { if (!(res.equalsIgnoreCase(""))) { tv.setText(res); } } } }
Комментариев нет:
Отправить комментарий