【问题标题】:How to call java based wsdl webservice using ksoap2 from android client?如何使用来自 android 客户端的 ksoap2 调用基于 java 的 wsdl webservice?
【发布时间】:2014-01-24 07:18:33
【问题描述】:

我是安卓新手。 我必须使用 ksoap2 从 android 客户端调用基于 java 的 wsdl webservice。 谁能帮我? 我尝试打电话但收到 XmlPullParserException。

【问题讨论】:

    标签: android wsdl android-ksoap2 wsdl2java


    【解决方案1】:

    这是我使用 ksoap 的一个类

    import java.io.IOException;
    
    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.xmlpull.v1.XmlPullParserException;
    
    import android.os.AsyncTask;
    import android.util.Log;
    import searchparams.MetaData;
    
    public class RequestTools {
    
        public interface ResultListener{
    
            /**
             * 
             * @param result
             * @param mode also used for error
             */
            public void onReadable(String result, int mode);
        }
    
        private static KSOAPAsync mSearchAsync = null;
    
        public static final int ERROR_UNDEFINED = -1;
        public static final int MODE_CALCULATOR = 0;
        public static final int MODE_WEATHER = 1;
    
        public static void startGetWeatherData(ResultListener listener, String city){
    
            mSearchAsync = new KSOAPAsync(listener, MODE_WEATHER);
            mSearchAsync.execute(city);
        }
    
        public static void startGetAddition(ResultListener listener, String x, String y){
    
            mSearchAsync = new KSOAPAsync(listener,MODE_CALCULATOR);
            mSearchAsync.execute(x,y);
        }
    
        public static class KSOAPAsync 
            extends AsyncTask<String, Boolean, SoapPrimitive> {
    
            private ResultListener resultListener = null;
    
            private int modeType = -1;
    
            public KSOAPAsync(ResultListener listener, int mode) {
                resultListener = listener;
                modeType = mode;
            }       
    
            @Override
            protected SoapPrimitive doInBackground(String... params) {
    
                SoapPrimitive result = null;
    
                switch(modeType){
    
                    case RequestTools.MODE_CALCULATOR:
    
                        result = getCalculation(
                                Integer.valueOf(params[0]),
                                Integer.valueOf(params[1]));
    
                        break;
    
                    case RequestTools.MODE_WEATHER:
    
                        result = getWeather(params[0]);
    
                        break;
    
                    default:
                }
    
    
    
                return result;
            }
    
            private SoapPrimitive getCalculation(int x, int y){
    
                SoapObject request = new SoapObject(
                        MetaData.Calculator.NAMESPACE,
                        MetaData.Calculator.METHOD_NAME);
    
                request.addProperty("x",x);
                request.addProperty("y",y);
    
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                                                        SoapEnvelope.VER11);
                envelope.dotNet = true;
    
                envelope.setOutputSoapObject(request);
    
                HttpTransportSE androidHttptransport = new HttpTransportSE(
                        MetaData.Calculator.URL);
    
                SoapPrimitive result = null;
    
                try {
                    androidHttptransport.call(MetaData.Calculator.SOAP_ACTION,
                            envelope);
    
                    result = (SoapPrimitive)envelope.getResponse();
    
                    Log.i(TAG,""+result.toString());
    
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
                return result;
            }
    
            private SoapPrimitive getWeather(String city){
    
                SoapObject request = new SoapObject(
                        MetaData.Weather.NAMESPACE,
                        MetaData.Weather.METHOD_NAME);
    
                request.addProperty("City", city);
    
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                                                        SoapEnvelope.VER11);
                envelope.dotNet = true;
    
                envelope.setOutputSoapObject(request);
    
                HttpTransportSE androidHttptransport = new HttpTransportSE(
                        MetaData.Weather.URL);
    
                SoapPrimitive result = null;
    
                try {
                    androidHttptransport.call(MetaData.Weather.SOAP_ACTION,
                            envelope);
    
                    result = (SoapPrimitive)envelope.getResponse();
    
                    Log.i(TAG,""+result.toString());
    
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
                return result;
            }
    
            private static final String TAG = RequestTools.class.getSimpleName();
    
            @Override
            protected void onPostExecute(SoapPrimitive result) {
    
                if(result == null){
                    resultListener.onReadable(null,RequestTools.ERROR_UNDEFINED);
                }else{
                    resultListener.onReadable(result.toString(),modeType);
                }
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多