WebService的封装

    xiaoxiao2023-03-24  3

    写代码前的准备:

    导架包:将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":"..............................

    转载请注明原文地址: https://ju.6miu.com/read-1202047.html
    最新回复(0)