Android中調(diào)用webservice

現(xiàn)在Android開發(fā)中在早期Android使用的webservice和后臺(tái)網(wǎng)絡(luò)請(qǐng)求比較多。
本文的重點(diǎn)是android怎么調(diào)用webservice而不是用哪個(gè)webservice,所以這里就用網(wǎng)上傳的比較多的計(jì)算來(lái)電歸屬地的webservice進(jìn)行測(cè)試。這個(gè)webservice地址為:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl。
下面簡(jiǎn)單介紹一下:

/**
     * 手機(jī)號(hào)段歸屬地查詢
     *
     * @param phoneSec 手機(jī)號(hào)段
     */
    public String getRemoteInfo(String phoneSec) throws Exception{
        String WSDL_URI = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL";//wsdl 的uri
        String namespace = "http://WebXml.com.cn/";//namespace
        String methodName = "getMobileCodeInfo";//要調(diào)用的方法名稱
 
        SoapObject request = new SoapObject(namespace, methodName);
        // 設(shè)置需調(diào)用WebService接口需要傳入的兩個(gè)參數(shù)mobileCode、userId
        request.addProperty("mobileCode", phoneSec);
        request.addProperty("userId", "");
 
        //創(chuàng)建SoapSerializationEnvelope 對(duì)象,同時(shí)指定soap版本號(hào)(之前在wsdl中看到的)
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);
        envelope.bodyOut = request;//由于是發(fā)送請(qǐng)求,所以是設(shè)置bodyOut
        envelope.dotNet = true;//由于是.net開發(fā)的webservice,所以這里要設(shè)置為true
 
        HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);
        httpTransportSE.call(null, envelope);//調(diào)用
 
        // 獲取返回的數(shù)據(jù)
        SoapObject object = (SoapObject) envelope.bodyIn;
        // 獲取返回的結(jié)果
        result = object.getProperty(0).toString();
        Log.d("debug",result);
        return result;
 
    }

以上方法在異步線程中調(diào)用比如如下:

class QueryAddressTask extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... params) {
            // 查詢手機(jī)號(hào)碼(段)信息*/
            try {
                result = getRemoteInfo(params[0]);
 
            } catch (Exception e) {
                e.printStackTrace();
            }
            //將結(jié)果返回給onPostExecute方法
            return result;
        }
 
        @Override
        //此方法可以在主線程改變UI
        protected void onPostExecute(String result) {
            // 將WebService返回的結(jié)果顯示在TextView中
            resultView.setText(result);
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容