Android 连接webservice(利用谷歌提供的jar包)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 连接webservice(利用谷歌提供的jar包)相关的知识,希望对你有一定的参考价值。

android开发,需要连接webservice,之前就想用谷歌提供的jar包,下载地址:http://pan.baidu.com/s/1hqMTUHe

把它下载下来粘贴到libs文件夹下即可:

技术分享

网上有很多类似的方法,我尝试了很多都没有成功,最后发现是我下载的jar包有问题导致我一直卡在哪儿。

首先添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

这是全部代码,包括获取远程webservice当中数据并用ListView显示:

package com.example.webservice;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    //命名空间
    String nameSpace="http://tempuri.org/";
    //调用方法
    String methodName="selectStuAll";//webservice存在的方法名称
    String endPoint="http://10.0.2.2:8011/WebService.asmx?wsdl";//本地测试完整的链接
    String soapAction="http://tempuri.org/selectStuAll";//命名空间和调用方法名

    private ListView listview;
    private ListAdapter adapter;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview=(ListView) findViewById(R.id.listView1);
        

        adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,getsource());
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO 自动生成的方法存根
                Toast.makeText(MainActivity.this, ">>"+adapter.getItem(arg2),1).show();
            }
        });
    }
public List<String> getsource()
    {
        List<String> list=new ArrayList<String>();
        
      //实例化SoapObject对象
        SoapObject request=new SoapObject(nameSpace, methodName);
        //第二步:假设方法有参数的话,设置调用方法参数
       /* request.addProperty("username","1");
        request.addProperty("password","2");
        request.addProperty("tel","3");*/
      //获得序列化的Envelope
        SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);
        envelope.bodyOut=request;
        envelope.dotNet=true;
        HttpTransportSE transport=new HttpTransportSE(endPoint);
        try {
            transport.call(soapAction, envelope);
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        SoapObject result = null;
        try {
            result = (SoapObject)envelope.getResponse();
        } catch (SoapFault e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        
        int count=result.getPropertyCount();
        for(int index=1;index<count;index=index+3){
            list.add(result.getProperty(index).toString());
        }
        return list;
    }
}

这样就大功告成了,如果用到这个方法有问题,在下面评论,我会帮你解决。

以上是关于Android 连接webservice(利用谷歌提供的jar包)的主要内容,如果未能解决你的问题,请参考以下文章

Android问题-DelphiXE5开发Andriod连接Webservice乱码问题

WebService连接sql serever并使用Android端访问数据

在android中使用soap webservices的mysql数据库连接

关于android通过webservice连接oracle数据库获取信息

android怎样调用webService

webservice是基于soap协议的,在android端可以用okhttp建立连接吗