关闭

Android中 调用WebService详解 ksoap2-android

标签: webserviceandroidksoap2-androidjar
1232人阅读 评论(0) 收藏 举报

首先下载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即可。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15230次
    • 积分:277
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章分类