WebService的封装

写代码前的准备:

导架包:将soap架包复制粘贴到libs文件下-------->右键工程名------->open Module settings------>dependencies------->点“+”---->file dependency----->找到libs下架包---->ok

开始写代码:

一:建一个类装参数名,对应项。(后面要用到)

public class CoresInWebServiece {
    private String name;
    private String result;
    //给get和set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }
   //构造器
    public CoresInWebServiece(String name, String result) {
        this.name = name;
        this.result = result;
    }
}
二、建一个类开始封装
public class FengWebServiece {
   
	//实现封装的方法 含参数(命名空间:NAME_SPACE,方法名:METHOD_NAME,网络连接:url,List集合泛型为前面创建的类的对象主要为了方法提中设置参数,一个用来传数据的自定义接口,后面有定义)。
    public static void getJson (final String NAME_SPACE, final String METHOD_NAME, final String  url, final List<CoresInWebServiece> list, final CallBack callBack) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                final String str;
                //实例化对象
                SoapObject soapObject=new SoapObject(NAME_SPACE,METHOD_NAME);
                //通过传来的list判断是否有参数,有则增加参数,webservice参数如果没有可以省略,
                if (list!=null){
                    for (int i=0;i<list.size();i++){
                        soapObject.addProperty(list.get(i).getName(), list.get(i).getResult());
                    }
                }
            
                //创建一个传输对象
                HttpTransportSE httpTransportSE=new HttpTransportSE(url);
                httpTransportSE.debug=true;
                //生成调用的WebService方法的Soap请求信息 获得序列化的Envelope
                SoapSerializationEnvelope soapSerializationEnvelope=new SoapSerializationEnvelope(SoapEnvelope.VER10);
                soapSerializationEnvelope.bodyOut=soapObject;
                soapSerializationEnvelope.dotNet=true;
                try {
		  //请求数据
                    httpTransportSE.call(null,soapSerializationEnvelope);
		//获得数据
                    SoapObject data = (SoapObject) soapSerializationEnvelope.bodyIn;
              //将获得的数据转化为标准的Json数据。
                    str=data.getProperty(0).toString();
		//将Json数据放到接口的方法里
                    callBack.setJsonString(str);
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }


//自定义的接口,用来创数据
    public interface CallBack{
        void setJsonString(String str);
    }

}

三,测试示例
	这里建一个Activity,布局里放一个按钮,按钮按下获得数据
public class FengWebServiceActivity extends Activity {
    private Button btn;
//定义好参数
    private static final String NAME_SPACE="http://info.service.zhidisoft.com";
    private static final String METHOD_NAME="columnChildList";
    private static final String url="http://114.215.193.46:8080/services/bmInfoService";
    private  List<CoresInWebServiece> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_feng_web_service);
        btn= (Button) findViewById(R.id.btn);
        list=new ArrayList<>();
        CoresInWebServiece c1=new CoresInWebServiece("communityCode", "00001");
        CoresInWebServiece c2=new CoresInWebServiece("columnCode", "xx");
        list.add(c1);
        list.add(c2);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
		//通过调用前面类的方法获得Json数据
                FengWebServiece.getJson(NAME_SPACE, METHOD_NAME, url, list,new FengWebServiece.CallBack() {
                    @Override
                    public void setJsonString(String str) {
			//这里的参数str就是我们要的Json数据,这里我通过日志打印出来
                        Log.e("Cat",str);
                    }
                });
            }
        });
    }
}

结果:Cat: {"result":true,"value":[{"id":"fdaeb2454b85f295014bd898d56100de","publishShow":"..............................

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值