Android中 调用WebService详解 ksoap2-android

原创 2013年12月05日 13:01:07

首先下载ksoap2-android jar包,下载地址为:https://code.google.com/p/ksoap2-android/

在项目下面建立一个libs文件夹,将刚刚下载的jar包放进去,再将其加入到工程的Build Path中



1. 布局文件/res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" 
    android:layout_margin="0px"
    android:padding="0px">
    <TextView
         
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="用户登录"
        android:textColor="#3f8f3f"
        android:textSize="30sp"/>

    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:stretchColumns="0,3" >

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:gravity="center" >

            <TextView />

            <TextView
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:gravity="left|center_vertical"
                android:text="用户名:"
                android:textColor="#3f8f3f"
                android:textSize="20sp" />

            <EditText
                android:id="@+id/username"
                android:layout_width="160dp"
                android:layout_height="38dp"
                android:gravity="left|center_vertical"
                android:textColor="#3f8fff"
                android:textSize="18sp" />

            <TextView />
        </TableRow>

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:gravity="center" >

            <TextView />

            <TextView
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:gravity="left|center_vertical"
                android:text="密  码:"
                android:textColor="#3f8f3f"
                android:textSize="20sp" />

            <EditText
                android:id="@+id/password"
                android:layout_width="160dp"
                android:layout_height="38dp"
                android:inputType="textPassword"
                android:gravity="left|center_vertical"
                android:textColor="#3f8fff"
                android:textSize="18sp" />

            <TextView />
        </TableRow>
    </TableLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal"
        android:layout_marginTop="10dp">

        <Button
            android:id="@+id/btn1"
            android:layout_width="80dp"
            android:layout_height="35dp"
            android:layout_marginRight="10dp"
            android:gravity="center"
            android:text="登录"
            android:textColor="#3f8f3f" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="80dp"
            android:layout_height="35dp"
            android:layout_marginLeft="10dp"
            android:gravity="center"
            android:text="注册"
            android:textColor="#3f8f3f" />
    </LinearLayout>

</LinearLayout>

效果图:



2.编写类MainActivity.java

package com.bibi.webservice;

import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
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.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.text.Editable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private EditText username;
	private EditText password;
	private Button btn1;
	private Button btn2;
	
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		username=(EditText) findViewById(R.id.username);
		password=(EditText) findViewById(R.id.password);
		btn1=(Button) findViewById(R.id.btn1);
		btn2=(Button) findViewById(R.id.btn2);
		
		btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String uname=username.getText().toString().trim();
				String upass=password.getText().toString().trim();
				if(validate(uname, upass)){
					if(login(uname, upass)){
						Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
						show_Dialog("登陆成功");
					}else{
						Toast.makeText(MainActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
						show_Dialog("登录失败");
					}
				}
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	public boolean login(String username, String password) {
		boolean result = false;
		//1.创建HttpTransportSE对象,该对象用于调用Web Service操作
		HttpTransportSE htse = new HttpTransportSE("http://192.168.137.1:8080/WebServiceTest/UserDAOPort?wsdl");
		htse.debug = true;
		//2.使用SOAP1.1协议创建Envelope对象
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
		//3.创建SoapObject对象,该对象需要传入Web Service的命名空间、方法名
		SoapObject request = new SoapObject("http://dao.bibi.com/", "login");
		//4.设置传给WebService的参数
		request.addProperty("arg0", username);
		request.addProperty("arg1", password);
		//5.将SoapObject设置为Envelope的传出SOAP消息体
		envelope.bodyOut=request;
		//6.调用HttpTransportSE对象的call方法,并将Envelope做为参数,调用远程Web Service
		try {
			//调用WebService
			htse.call(null, envelope);
			if (envelope.getResponse() != null) {
				//7.获取服务器响应返回的SOAP消息体
				SoapObject response = (SoapObject) envelope.bodyIn;
				
				Log.i("====response====", response.toString());
				//====response====  loginResponse{return=true; }
				SoapPrimitive sp = (SoapPrimitive) response.getProperty(0);
				Log.i("====getProperty====", response.getProperty(0).toString());
				//====getProperty====  true
				Log.i("====sp====", sp.toString());
				//====sp====  true
				
				if(("true").equals(sp.toString())){
					result = true;
				}
			}
		} catch (IOException ioe) {
			Log.i("==dddddd=",ioe.getMessage());
			ioe.printStackTrace();
		} catch (XmlPullParserException xppe) {
			Log.i("==dddddd123=",xppe.getMessage());
			xppe.printStackTrace();
		}
		return result;
	}
	
	
	public void show_Dialog(String msg){
		AlertDialog.Builder dialog =new AlertDialog.Builder(this);
		dialog.setTitle(msg);
		dialog.setCancelable(true);
		dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
			}
		});
		
		dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "点击了取消", Toast.LENGTH_SHORT).show();
			}
		});
		//dialog.show();
		
		AlertDialog alert=dialog.create();
		alert.show();
	}
	
	public boolean validate(String username,String password){
		if(username.equals("")){
			show_Dialog("用户名不能为空!");
			return false;
		}
		
		if(password.equals("")){
			show_Dialog("密码不能为空!");
			return false;
		}
		return true;
	}


}

3.访问网络的权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bibi.webservice"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.bibi.webservice.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在调用某些WebService时,可能在第87行代码中,htse.call(null, envelope);

调用WebService时并不需要传入soapAction,将其置为null即可。




Android通过ksoap2这个框架调用webservice大讲堂

昨天有人问我Android怎么连接mysql数据库,和对数据库的操作呀,我想把,给他说说json通信,可是他并不知道怎么弄,哎算了吧,直接叫他用ksoap吧,给他说了大半天,好多零碎的知识,看来还是有...
  • baidu_23086307
  • baidu_23086307
  • 2016年05月02日 14:47
  • 5752

一个ksoap2-android调用webService的封装库

WebService 基本概念 WebService是一种基于SOAP协议的远程调用标准,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK没有直接调...
  • Marvinhq
  • Marvinhq
  • 2017年03月05日 21:30
  • 1192

Android使用ksoap2调用C#中的webservice实现图像上传

目录:    一. android使用ksoap2调用webservice    二. 异步调用    三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法    ...
  • huohe2009
  • huohe2009
  • 2014年02月27日 11:04
  • 1496

Android之ksoap2-android详解与调用天气预报Webservice完整实例

Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi...
  • qq_27029491
  • qq_27029491
  • 2015年05月06日 23:07
  • 666

Android之ksoap2-android详解与调用天气预报Webservice完整实例

Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi...
  • x605940745
  • x605940745
  • 2013年11月19日 23:59
  • 16493

Android平台调用WebService详解

Ksoap2-android简介 在Android平台调用Web Service需要依赖于第三方类库ksoap2,它是一个SOAP Web service客户端开发包,主要用于资源受限制的...
  • u011057161
  • u011057161
  • 2014年12月29日 14:34
  • 574

android中简单搞定webservice接口访问,以及webservice简析

最近总结的一些经验,对于android或java中使用webservice接口的一些心得。不过需要注意的是,在android中,以下代码需要在子线程中使用。好了,废话不多说了,直接上代码,只是一个代码...
  • csdn_0012306
  • csdn_0012306
  • 2017年01月18日 16:03
  • 5619

Android调用WebService(图文教程)

 http://www.xuebuyuan.com/1923390.html        WebService服务端的建立 创建一个WebService项目 在myecl...
  • yuanyuan_186
  • yuanyuan_186
  • 2016年04月11日 16:10
  • 2312

KSoap2-android的调用以及封装使用

KSoap2-android的简单用法依赖Ksoap2-android包点击下载使用SoapObject rpc = new SoapObject("命名空间", "方法名"); //...
  • LiuShuaiQ
  • LiuShuaiQ
  • 2017年04月19日 17:32
  • 3996

Android 通过WebService进行网络编程,使用工具类轻松实现

相信大家在平常的开发中,对网络的操作用到HTTP协议比较多,通过我们使用Get或者Post的方法调用一个数据接口,然后服务器给我们返回JSON格式的数据,我们解析JSON数据然后展现给用户,相信很多人...
  • xiaanming
  • xiaanming
  • 2013年11月22日 09:59
  • 38947
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中 调用WebService详解 ksoap2-android
举报原因:
原因补充:

(最多只允许输入30个字)