Search in sources :

Example 1 with HttpTransportSE

use of org.ksoap2.transport.HttpTransportSE in project teaTime by ancfdy.

the class WebServiceUtils method callWebService.

/**
     *请求网络数据
     * @param url
     *            WebService服务器地址
     * @param methodName
     *            WebService的调用方法名
     * @param properties
     *            WebService的参数
     * @param webServiceCallBack
     *            回调接口
     */
public static void callWebService(String url, final String methodName, HashMap<String, String> properties, final WebServiceCallBack webServiceCallBack) {
    // 创建HttpTransportSE对象,传递WebService服务器地址
    final HttpTransportSE httpTransportSE = new HttpTransportSE(url);
    // 创建SoapObject对象
    SoapObject soapObject = new SoapObject(NAMESPACE, methodName);
    if (properties != null) {
        for (Iterator<Entry<String, String>> it = properties.entrySet().iterator(); it.hasNext(); ) {
            Entry<String, String> entry = it.next();
            soapObject.addProperty(entry.getKey(), entry.getValue());
        }
    }
    // 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号
    //tomcat 7.055 for 64  jdk 1.6 for 64  web3.0 这里写 ver12 ,如果是ver11会报 http 415错误
    final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
    // 设置是否调用的是.Net开发的WebService
    soapEnvelope.bodyOut = soapObject;
    //如果调用的是.Net的WebService,这里为true,否则为false,不然调用会不成功
    soapEnvelope.dotNet = false;
    soapEnvelope.setOutputSoapObject(soapObject);
    httpTransportSE.debug = true;
    // 用于子线程与主线程通信的Handler
    final Handler mHandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            // 将返回值回调到callBack的参数中
            webServiceCallBack.callBack((Object) msg.obj);
        }
    };
    // 开启线程去访问WebService
    executorService.submit(new Runnable() {

        @Override
        public void run() {
            Object resultSoapObject = null;
            try {
                httpTransportSE.call(WEB_SERVER_URL + methodName, soapEnvelope);
                if (soapEnvelope.getResponse() != null) {
                    // 获取服务器响应返回的SoapObject
                    resultSoapObject = (Object) soapEnvelope.bodyOut;
                }
            } catch (HttpResponseException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            } finally {
                // 将获取的消息利用Handler发送到主线程
                mHandler.sendMessage(mHandler.obtainMessage(0, resultSoapObject));
            }
        }
    });
}
Also used : Message(android.os.Message) SoapObject(org.ksoap2.serialization.SoapObject) Handler(android.os.Handler) HttpResponseException(org.ksoap2.transport.HttpResponseException) HttpTransportSE(org.ksoap2.transport.HttpTransportSE) IOException(java.io.IOException) Entry(java.util.Map.Entry) SoapObject(org.ksoap2.serialization.SoapObject) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) SoapSerializationEnvelope(org.ksoap2.serialization.SoapSerializationEnvelope)

Example 2 with HttpTransportSE

use of org.ksoap2.transport.HttpTransportSE in project teaTime by ancfdy.

the class WebServiceUtils method callWebService.

/**
     *请求网络数据
     * @param url
     *            WebService服务器地址
     * @param methodName
     *            WebService的调用方法名
     * @param properties
     *            WebService的参数
     * @param webServiceCallBack
     *            回调接口
     */
public static void callWebService(String url, final String methodName, HashMap<String, String> properties, final WebServiceCallBack webServiceCallBack) {
    // 创建HttpTransportSE对象,传递WebService服务器地址
    final HttpTransportSE httpTransportSE = new HttpTransportSE(url);
    // 创建SoapObject对象
    SoapObject soapObject = new SoapObject(NAMESPACE, methodName);
    if (properties != null) {
        for (Iterator<Entry<String, String>> it = properties.entrySet().iterator(); it.hasNext(); ) {
            Map.Entry<String, String> entry = it.next();
            soapObject.addProperty(entry.getKey(), entry.getValue());
        }
    }
    // 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号
    //tomcat 7.055 for 64  jdk 1.6 for 64  web3.0 这里写 ver12 ,如果是ver11会报 http 415错误
    final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
    // 设置是否调用的是.Net开发的WebService
    soapEnvelope.bodyOut = soapObject;
    //如果调用的是.Net的WebService,这里为true,否则为false,不然调用会不成功
    soapEnvelope.dotNet = false;
    soapEnvelope.setOutputSoapObject(soapObject);
    httpTransportSE.debug = true;
    // 用于子线程与主线程通信的Handler
    final Handler mHandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            // 将返回值回调到callBack的参数中
            webServiceCallBack.callBack((Object) msg.obj);
        }
    };
    // 开启线程去访问WebService
    executorService.submit(new Runnable() {

        @Override
        public void run() {
            Object resultSoapObject = null;
            try {
                httpTransportSE.call(WEB_SERVER_URL + methodName, soapEnvelope);
                if (soapEnvelope.getResponse() != null) {
                    // 获取服务器响应返回的SoapObject
                    resultSoapObject = (Object) soapEnvelope.bodyOut;
                }
            } catch (HttpResponseException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            } finally {
                // 将获取的消息利用Handler发送到主线程
                mHandler.sendMessage(mHandler.obtainMessage(0, resultSoapObject));
            }
        }
    });
}
Also used : Message(android.os.Message) SoapObject(org.ksoap2.serialization.SoapObject) Handler(android.os.Handler) HttpResponseException(org.ksoap2.transport.HttpResponseException) HttpTransportSE(org.ksoap2.transport.HttpTransportSE) IOException(java.io.IOException) Entry(java.util.Map.Entry) SoapObject(org.ksoap2.serialization.SoapObject) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) SoapSerializationEnvelope(org.ksoap2.serialization.SoapSerializationEnvelope) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Handler (android.os.Handler)2 Message (android.os.Message)2 IOException (java.io.IOException)2 Entry (java.util.Map.Entry)2 SoapObject (org.ksoap2.serialization.SoapObject)2 SoapSerializationEnvelope (org.ksoap2.serialization.SoapSerializationEnvelope)2 HttpResponseException (org.ksoap2.transport.HttpResponseException)2 HttpTransportSE (org.ksoap2.transport.HttpTransportSE)2 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1