Android在網路中與JavaWeb的項目進行互動的方法

來源:互聯網
上載者:User

最近在研究一些Android和JavaWeb項目的互動問題,總結一點東西在這篇文章裡。首先說來,如果想要實現Android在網路上與JavaWeb的互動,就要把JavaWeb的項目的方法暴露在網路中,然後供Android的這一端調用,實現互動,其中,主要用到了兩個知識點,WebService和SOAP的使用。
    這裡我寫了一個很簡單的小例子來實現互動。
    首先,在開發工具中,建立了一個Web Project,一定要對項目添加JAX-WS類庫。在代碼部分我就唯寫了一個很簡單的計算兩個數的和的函數:
package com.demo.pack;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
 
@WebService
public class Calculate {
 
    @WebMethod
    public int add(final int num1, final int num2){
        return num1 + num2;
    }
}
然後,點擊中的New Web Service,將剛剛寫的這個函數放到網路服務上


 

點擊Finish就建立完成了,這個項目的Calculate方法已經被暴露在了網路上,也就是說,可以供Android調用了。
接下來,我再另外建立了一個Android的項目。在這個Android項目中除了Android的自己的庫之外,一定還要引入以下的ksoap2-android-assembly-2.4-jar-with-dependencies.jar

這個jar檔案可以使Android的項目訪問到Web Service,所以必不可少,一定要加入進來。
在Android的這個項目的布局中,我只是添加了兩個EditText來得到使用者輸入的值,和一個Button去調用WebService上已經託管在網路上的Calculate函數來計算結果。
在Button的監聽器類當中,編寫了和JavaWeb項目互動的代碼,主要的部分具體如下:
//WebService中的wsdl檔案的網路地址
                String wsdl = "http://192.168.1.102:8080/ch10_app01_WebService/CalculatePort?wsdl";
                //WebService中的命名空間
                String namespace = "http://pack.demo.com/";
                //調用方法的名稱
                String webmethod = "add";
                //建立soapObject對象
                SoapObject soapObject = new SoapObject(namespace, webmethod);
                //設定參數
                soapObject.addProperty("arg0", num1);
                soapObject.addProperty("arg1", num2);
                //建立SoapSerializationEnvelope對象,並設定WebService版本號碼
                SoapSerializationEnvelope serializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                //設定serializationEnvelope對象的badyOut屬性
                serializationEnvelope.bodyOut = soapObject;
                //建立HttpTransportSE對象,並且確定wsdl網路地址
                HttpTransportSE httpTransportSE = new HttpTransportSE(wsdl);                
                try {
                    //httpTransportSE調用Call方法
                    httpTransportSE.call(null, serializationEnvelope);
                    //擷取返回的結果對象
                    if(serializationEnvelope.getResponse() != null){
                        Object obj = serializationEnvelope.getResponse();
                        //顯示擷取到的結果對象
                        Toast.makeText(getApplicationContext(), "結果為:"+obj.toString(), Toast.LENGTH_LONG).show();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
在這段代碼中,有必要說明一下的是,在寫WebService中的wsdl檔案的網路地址時,一定要寫ipv4的靜態地址,不能寫什麼localhost。另外,命名空間什麼的可以再JavaWeb項目中的CalculateDelegate.java中找到。運行如下:

這樣,Android項目就成功的和JavaWeb項目實現了互動!
本文出自 “nankaigz” 部落格

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.