Android使用SOAP webservice

一、在lib添加KSOAP jar包

链接:https://pan.baidu.com/s/1zuRpfEylf-eReR_-eErwoQ
提取码:06cu

二、在Activity中声明:

//声明命名空间

private String NameSpace = "http://tempuri.org/";

//声明使用的方法

private String MethodName = "getgongys";

//声明SoapObject

SoapObject response = null;

//将NameSpace 和MethodName 拼接,形成soapAction

private String soapAction = NameSpace + MethodName;

三、 具体使用:(惯用的使用手法)

(1)使用线程的方式调用webservice:

 

    Thread thread = new Thread(new Runnable() {

       @Override

       public void run() {

           // TODO Auto-generated method stub

           //声明一个result对象接收结果

            Object result = null;

            SoapObject request = new SoapObject(NameSpace, MethodName);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

         //设置是否调用的是dotNet下的WebService

          envelope.dotNet = true;//必须,等价于envelope.bodyOut = request;

        //向request中添加参数:这里的根据实际的webservice要求

         request.addProperty("bm",txtEditText.getText().toString());

         //request.addProperty("spec",txtspec.getText().toString());

         envelope.setOutputSoapObject(request);

                //step4 创建HttpTransportSE对象

                HttpTransportSE ht = new HttpTransportSE(Sysvar.url);

                //step5 调用WebService 

                try {

                  response=null;

                 ht.call(soapAction, envelope);

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

                    //集合用SoapObject

         response = (SoapObject) envelope.getResponse();

        //单个数据

                 // result = (Object) envelope.getResponse();              

                 }

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    Log.v("tag", e.toString());

                } catch (XmlPullParserException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            

           //我这边是通过handler的方式传值回去进行UI更新和其他操作

           Message message = new Message();

           message.what =0;

           //message.obj=result;

           mHandler.sendMessage(message);

       }  

      

    });

//开启线程

    thread.start();

 

(2)在handler中使用webservice中返回的值

    /****************多线程反馈*************************************/

 

    public Handler mHandler = new Handler() {

       public void handleMessage(Message msg) {

           switch (msg.what) {

           case 0:

              ArrayList<Vendor> vendors=new ArrayList<Vendor>();

                 int i= response.getPropertyCount();

                for (int j = 0; j < i; j++) { 

                   //  aList.add((serch)response.getProperty(j).toString())

                  //  Log.v("tag",  response.getProperty(j).toString());

     //用一个SoapObject接收返回结果

                  SoapObject   result1= (SoapObject)response.getProperty(j);

      //具体接收数据由实际情况决定,这只是格式

                  Vendor ssVendor=new Vendor();

                  ssVendor.setVendorcode(result1.getProperty(0).toString());

                    ssVendor.setVendornameString(result1.getProperty(1).toString());

                    ssVendor.setRmbString(result1.getProperty(2).toString());

                    vendors.add(ssVendor);

              //   Toast.makeText(Kin.this, result1.getProperty(1).toString(), Toast.LENGTH_SHORT).show();

                }

               // Intent it=new Intent(Kin.this,Gongyingshua.class);

              //  it.putExtra("ss", vendors);

             //  startActivityForResult(it, 0);

                addtable(vendors);

               myProgressDialog.dismiss();

              break;    

           }

          

           }

    };

 

posted @ 2018-12-20 15:07  木桩  阅读(386)  评论(0)    收藏  举报