美文网首页
Android中调用webservice

Android中调用webservice

作者: townof1997 | 来源:发表于2020-04-27 16:53 被阅读0次

    现在Android开发中在早期Android使用的webservice和后台网络请求比较多。
    本文的重点是android怎么调用webservice而不是用哪个webservice,所以这里就用网上传的比较多的计算来电归属地的webservice进行测试。这个webservice地址为:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
    下面简单介绍一下:

    /**
         * 手机号段归属地查询
         *
         * @param phoneSec 手机号段
         */
        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";//要调用的方法名称
     
            SoapObject request = new SoapObject(namespace, methodName);
            // 设置需调用WebService接口需要传入的两个参数mobileCode、userId
            request.addProperty("mobileCode", phoneSec);
            request.addProperty("userId", "");
     
            //创建SoapSerializationEnvelope 对象,同时指定soap版本号(之前在wsdl中看到的)
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);
            envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOut
            envelope.dotNet = true;//由于是.net开发的webservice,所以这里要设置为true
     
            HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);
            httpTransportSE.call(null, envelope);//调用
     
            // 获取返回的数据
            SoapObject object = (SoapObject) envelope.bodyIn;
            // 获取返回的结果
            result = object.getProperty(0).toString();
            Log.d("debug",result);
            return result;
     
        }
    

    以上方法在异步线程中调用比如如下:

    class QueryAddressTask extends AsyncTask<String, Integer, String> {
            @Override
            protected String doInBackground(String... params) {
                // 查询手机号码(段)信息*/
                try {
                    result = getRemoteInfo(params[0]);
     
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //将结果返回给onPostExecute方法
                return result;
            }
     
            @Override
            //此方法可以在主线程改变UI
            protected void onPostExecute(String result) {
                // 将WebService返回的结果显示在TextView中
                resultView.setText(result);
            }
        }
    

    相关文章

      网友评论

          本文标题:Android中调用webservice

          本文链接:https://www.haomeiwen.com/subject/gskuwhtx.html