Android利用webservice連接遠程sqlserver數據庫

WebService原理

三大技術

XML

WebService採用Http協議傳輸數據,使用XML封裝數據以實現跨平臺。

SOAP

規定消息頭和XML內容格式的協議

WSDL

WebService的說明書,提供所能使用的方法、參數和返回值。

IIS 新建WebService站點

新增網站

打開IIS控制檯,找到服務根目錄,右鍵,新建網站

網站設定

瀏覽測試

使用剛纔生成的默認HelloWorld的服務1頁面,記得加上端口號

http://localhost:8090/service1.asmx

如果出現以下畫面,代表設置成功

C# WebService

新增WebService專案

更改服務程式名稱

重命名程式名稱

Service1.asmx 修改爲 TestService.asmx

此時下面的cs代表文件也會跟着修改,但可發現,代碼中的類名並沒有跟着變動

修改類名稱

手動將類名稱由 Service1 修改爲 TestService

如果此時執行發佈會發現還是會有問題,報錯無法建立型別 ‘.Service1’

修改服務綁定代碼

在 TestService.asmx 上右鍵選擇打開方式,選擇“Web服務編輯器”打開

此時會看到服務所有設定,比如編程語言,後臺代碼,類庫等,修改類庫名爲上一步所設值

發佈

專案上右鍵,點擊發布,如果不是第一次發佈,上次的配置會保留,默認就好

Android Soap

Ksoap2-android

官網地址

https://simpligility.github.io/ksoap2-android/index.html

發行版本

https://oss.sonatype.org/content/repositories/ksoap2-android-releases/

  • 切記所需要的文件是在

com>google>code>ksoap2-android>ksoap2-android-assembly

  • 選擇最新版本,然後使用-with-dependencies.jar包

最新版本

https://oss.sonatype.org/content/repositories/ksoap2-android-releases/com/google/code/ksoap2-android/ksoap2-android-assembly/3.6.4/ksoap2-android-assembly-3.6.4-jar-with-dependencies.jar

調用WebService取得數據

初使化soap
private final String serviceNameSapce = "http://192.168.20.135:8090/";
private final String serviceUrl = "http://192.168.20.135:8090/TestService.asmx";
private final String serviceMethod = "HelloWorld";
private final String serviceAction = "http://192.168.20.135:8090/HelloWorld";
private String strResult = "";
調用
new Thread(new Runnable() {
    @Override
    public void run() {
        //創建HttpTransportSE傳輸對象,serviceUrl是webservice提供服務的url
        HttpTransportSE httpTransportSE = new HttpTransportSE(serviceUrl);
        //使用SOAP1.1協議創建Envelop對象,根據服務端WebService的版本號設置SOAP協議的版本號
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        //實例化SoapObject對象,第一個參數表示命名空間,第二個參數表示要調用的WebService方法名
        SoapObject soapObject= new SoapObject(serviceNameSapce, serviceMethod);
        //設置調用方法的參數值,如果沒有參數,可以省略
        //soapObject.addProperty("theCityCode", cityName);
        envelope.bodyOut = soapObject;
        envelope.dotNet = true;
        try {
            //調用webservice
            httpTransportSE.call(serviceAction, envelope);
            //獲取服務器響應返回的SOAP消息
            if(envelope.getResponse() != null){
                SoapObject resultSoap = (SoapObject)envelope.bodyIn;
                strResult = resultSoap.getProperty(0).toString();
                mHandler.sendEmptyMessage(0x002);
            }
        } catch (IOException | XmlPullParserException e) {
            e.printStackTrace();
        }
    }
}).start();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章