Отклик WSDL клиента на Android

IBM предоставил замечательный обучающий материал о том как получить информацию с WSDL сервиса с устройства на Android

Пример в указанной статье дает ясное представление о том, как работает KSoap библиотека. Но в процессе интеграции приведенного примера я обнаружил, что результат не возвращается так как указано в статье.
Вот исправленный пример:

package android.webservice.client;

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

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

public class AndroidWSClient extends Activity {
 private static final String NAMESPACE = "http://hello_webservice/";
 private static String URL = "http://192.168.1.68:7001/HelloWebService/HelloWSService?WSDL"; 
 private static final String METHOD_NAME = "hello";
 private static final String SOAP_ACTION =  "http://hello_webservice/hello";
 private TextView lblResult;
 

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

  lblResult = (TextView) findViewById(R.id.result);
  SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
  PropertyInfo propInfo=new PropertyInfo();
  propInfo.name="arg0";
  propInfo.type=PropertyInfo.STRING_CLASS;
  request.addProperty(propInfo, "John Smith");  
  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;
   lblResult.setText(resultsRequestSOAP.getPropertyAsString("result")); //"result" is the array, which is reported by WebService
  } catch (Exception e) {

  }
 }
}  

Leave a Reply

%d bloggers like this: