想实现一个功能即让android访问远程数据库,但是网上很多人都不建议直连。据说问题多多。那么中间就加个第三者吧。

     实现思路:在数据库和android客户端添加一个webservice,处理每次客户端发来的请求。而在android客户端使用ksoap2解析webservice返回的数据。

    一 webservice 端,我使用序列化的方式实现的。不知道这里跟xml的实现哪个对手机来说更好。这里先放下,以后研究。

       1.我使用的是xfire。新建一个webservice项目,然后我们开始写代码

        2.一个接口

public interface ICompany {public List getCompanyList();}

     3一个实现类

public class ICompanyImp implements ICompany {CompanyDAO comdao=new CompanyDAO();//得到所有公司列表public List getCompanyList() {List list=new ArrayList();try {list=comdao.getCompanyList();} catch (SQLException e) {e.printStackTrace();list=null;}return list;}}

  注意: 我这里的返回值是list,不少webservice的基本类型,所以需要为它配置文件  接口+.aegis.xml

4 接口+.aegis.xml

<?xml version="1.0" encoding="UTF-8"?>                                                 

 

5.service.xml

<?xml version="1.0" encoding="UTF-8"?>MyServicemain.service.ICompanymain.service.ICompanyImpliteralapplicationhttp://android.googlepages.com/

 

发布项目后,运行效果如图:
 


 
 
项目结构:




 


二 android客户端

 
 因为ksoap2解析webservice得到的数据类似于以下:getCompanyListResponse{out=anyType{Company=anyType{company=安徽江淮汽车股份有限公司; id=1; }; }; }

  1 解析类:MyWebServiceHelper

public class MyWebServiceHelper {// WSDL文档中的命名空间       private static final String targetNameSpace = "http://android.googlepages.com/";            // WSDL文档中的URL       private static final String WSDL = "http://192.168.1.144:8080/oilservice/services/MyService";      // 需要调用的方法名(获得Myervices中的helloWorld方法)             //需要调用的方法名(获得Myervices中的login方法)       private static final String getCompany="getCompanyList";             public List  getCompanyList( ) {          List list=new ArrayList();                SoapObject request =new SoapObject(targetNameSpace,getCompany);                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(                  SoapEnvelope.VER11);                 envelope.dotNet = false;         envelope.setOutputSoapObject(request);                 AndroidHttpTransport  httpTranstation = new AndroidHttpTransport (WSDL);         try {              httpTranstation.call(targetNameSpace+getCompany, envelope);              SoapObject soapObject = (SoapObject) envelope.getResponse();                 //如果获取的是个集合,就对它进行下面的操作                if(soapObject.getName()=="anyType") {                    //遍历Web Service获得的集合                    for(int i=0;i

 

2 实现类:

 

public class OilActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Spinner spinner = (Spinner) findViewById(R.id.company);                ArrayAdapter  adapter = new ArrayAdapter(                this,android.R.layout.simple_spinner_item);        adapter.setDropDownViewResource(                android.R.layout.simple_spinner_dropdown_item);               //调用自已写的webService           MyWebServiceHelper webServiceHelper=new MyWebServiceHelper();      List compnayList=  webServiceHelper.getCompanyList();              for(int i=0;i

 3 两个项目中都用到的bean

public class Company implements Serializable{private static final long serialVersionUID = 1L;private int id;private String company;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}}

 

最后测试以下,list返回正确。效果图:

 



 

3项目结构:

 



 

      

   参考文章:

http://ksoap2.sourceforge.net/doc/api/ ksoap2的API

http://topic.csdn.net/u/20110412/16/0341626d-8576-4dda-b9e4-aab3ff50c980.html 关于list处理的帖子

http://blog.csdn.net/haha_mingg/article/details/6338332,总的思路的实现。在此感谢作者的无私奉献

android 初学,愿与大家相互交流。共同进步。

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. python list.sort()根据多个关键字排序的方法实现
  3. Android(安卓)studio怎么创建文件? Android(安卓)studio新建Java
  4. Fuchsia OS 要取代 Android?小论Google Fuchsia OS的通用性
  5. Android(安卓)LOG机制的实现的详细解读
  6. https://source.android.com/devices/bluetooth/ - 蓝牙 Android
  7. 包建强的培训课程(2):Android与设计模式
  8. Android(安卓)轻松实现语音朗读
  9. Android(安卓)创建与解析XML(一)—— 概述

随机推荐

  1. Android绘图API自定义View(三)
  2. Android修改状态栏颜色
  3. Android IntentService用法和源码分析
  4. Android常用三方库混淆规则整理(小结)
  5. Android ScrollView里嵌套ListView
  6. android保存数据到xml以及pull解析模板
  7. Android ButterKnife注解式开发
  8. How to enable logging for apache commo
  9. [置顶] android Listview分批加载+自动加
  10. 58. SaveVolley