12.21-Android WebService(基於KSOAP2)

KSOAP2_鏈接WebServicejava

*****我是小知識點********android

Ksoap2提供了對soap序列化更好的支持。Ksoap2是一個輕量級的J2ME平臺的實現框架,提供了soap協議消息的服務器

組裝,網絡post,網絡return,解析等功能。網絡

****美美分割線**********框架

一、在項目工程中導入KSOAP2.jar包異步

二、訪問.net的URL,找到約定的URL命名空間和訪問方法post

String SERVICE_NS = "http://tempuri.org/";
String methodName = "mydata";spa

三、建立SoapObject,傳入所要調用的Web Service的命名空間,Web Service方法名.net

SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);線程

四、傳參數給Web Service 服務器,調用SoapObject對象的addProperty(String name,Object value)方法去設置參數。(name爲android與.net約定的參數名)

soapObject.addProperty("L",con);

五、使用SOA1.1協議建立Envelop對象,設置與.net提供的WebService保持較好的兼容性

 // 生成調用WebService方法調用的soap信息,而且指定Soap版本  

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut=soapObject;

envelope.dotNet = true;// 是否調用DotNet開發的WebService 

六、建立HttpTransportSE傳輸對象,傳入WebService服務器地址

String SERVICE_URL = "http://192.168.66.66:82/data.asmx";

 HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);

七、經過調用HttpTransportSE對象的call方法,其中call的第一個參數是命名空間+Web service方法名,第二個參數是SoapSerializationEnvelope的對象。

ht.call(SERVICE_NS+methodName, envelope);

八、假如返回值爲字符串,接收返回參數的方法是:SoapSerializationEnvelope的對象envelope,envelioe.getResponse,接收返回的值。

if(envelope.getResponse()!=null){

    String s = envelope.getResponse().toString();

}

************需注意的幾點***********

一、命名空間必定要跟URL格式一致

二、方法名要與.net一致

三、注意SOAP的版本是10/11/12,你能夠看.net中的xml文件開頭版本,或者將三者均試一遍。

四、在調用的時候不能放在主線程中,要放在異步線程調用

***********華麗的分割線*************

package test.example.Ksoap2;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

public class ConnectWebService {
    /**
     * 判斷回來的值是否正確
     * 
     * @param con
     * @return
     */
    public static boolean getData(String con) {
        String SERVICE_URL = "http://192.168.66.66:82/data.asmx";
        String SERVICE_NS = "http://tempuri.org/";
        String methodName = "mydata";

        // 建立SoapObject對象,
        // 建立該對象時須要傳入所要調用Wb Service的命名空間、Web Service方法名;
        SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
        // 若是有參數要傳給Web Service服務器,
        // 調用SoapObject對象的addProperty(String name,Object value)方法來設置參數,
        // 該方法的name參數指定參數名;
        // value參數指定參數值
        soapObject.addProperty("L", con);
        // 使用SOA1.1協議建立Envelop對象
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
        envelope.bodyOut = soapObject;
        // 是否調用DotNet開發的WebService ,設置與.net提供的Web Service 保持較好的兼容性
        envelope.dotNet = true;
        try {
            // 經過HttpTransportSE傳輸對象,傳入WebService服務器地址
            HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
            // 調用HttpTransportSE對象的call()方法,其中call的第一個參數soapAction,
            // 第二個爲SoapSerializationEvelope對象 調用遠程Web Service;
            ht.call(SERVICE_NS + methodName, envelope);
            if (envelope.getResponse() != null) {
                // 獲取服務器響應返回的SOAP消息
                /*
                 * SoapObject result = (SoapObject) envelope.bodyIn; SoapObject
                 * detail = (SoapObject)
                 * result.getProperty(methodName+"Result");
                 */
                /*
                 * 獲取返回的數據 SoapObject object = (SoapObject) envelope.bodyIn;
                 * 獲取返回的結果 String result = object.getProperty(0).toString();
                 */
                // 解析服務器相應的SOAP消息-字符串
                String s = envelope.getResponse().toString();
                if (s.equals("ok")) {
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            System.out.println("********************異常啦");
        }
        return false;
    }
}

******************我是每天酷濤*******************

相關文章
相關標籤/搜索