`
lxcaoxin
  • 浏览: 127345 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Android使用ksoap2包调用Webservice

 
阅读更多
1.在项目导入ksoap2包(见附件)

2.在AndrioidMainfest.xml中加入连接网络权限
<uses-permission android:name="android.permission.INTERNET"/>


3.Activity类
package com.apj;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;


import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class WebServiceActivity extends Activity {
	// /命名空间,要看wsdl文件确定,例如http://127.0.0.1:8080/seam3/VoteWebServiceImpl/VoteWebservice?wsdl的
	// /命名空间为targetNamespace="http://apj.vote.webservice.com"

	private static final String NAMESPACE = "http://apj.vote.com";
	// /请求URL http://localhost:8080/seam3/VoteWebServoce/VoteWebService?wsdl
	//android连接
	private static String URL = "http://10.0.2.2:8080/seam3/VoteWebService/VoteWebService";
	// /调用的方法
	private static final String METHOD_NAME = "vote";
	// /命名空间加方法名
	private static String SOAP_ACTION = "http://apj.vote.com/vote";
	TextView  t1 =null;
	Button   button=null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        t1 =(TextView) findViewById(R.id.reTxt);
        button =(Button)findViewById(R.id.botton);
        
        button.setOnClickListener(new WebOnclick());
    }
    
    
    class  WebOnclick implements OnClickListener {

		@Override
		public void onClick(View v) {
			ResponseVote();
			
		}
    	
    }
	// //调用线程函数
	public void ResponseVote() {
		VoteThread thread = new VoteThread(loginHandler);

		thread.dostart(1);
	}

// //生成消息对象
	Handler loginHandler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);

			switch (msg.what) {
			case 1:
				///从Message对象中得到WebService返回的信息
				String ReturnMessage = msg.getData().getString("message");
				int start = ReturnMessage.indexOf("=");
				int end = ReturnMessage.indexOf(";");
			
				// //截取字符串
				String temp = ReturnMessage.substring(start+1, end);
				
				t1.setText(temp);
				System.out.println("ReturnMessage=" + ReturnMessage);

				break;
			case 2:
	
				break;
			case 3:
				new AlertDialog.Builder(WebServiceActivity.this).setTitle("error")
						.setMessage("网络连接出错").setNeutralButton("返回",
								new DialogInterface.OnClickListener() {
									public void onClick(DialogInterface dlg,
											int sumthin) {

									}
								}).show();

			}
		}

	};
  
  ///连接线程类
  public class VoteThread extends Thread{
	  
	     public Handler handler = null;
	     public int vtId;
		public ProgressDialog progressDialog;
		
		///构造函数
		public VoteThread(Handler handler)
		{
			this.handler=handler;
		}
		// /线程开始
		public void dostart(int voteTeam) {
			// /把参数传入
			this.vtId=voteTeam;

			progressDialog = new ProgressDialog(WebServiceActivity.this);
			progressDialog.setTitle("网络连接");
			progressDialog.setMessage("正在投票中,请稍后..");
			progressDialog.setIndeterminate(true);
			progressDialog.setButton("取消",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							progressDialog.cancel();

						}

					});
			progressDialog
					.setOnCancelListener(new DialogInterface.OnCancelListener() {
						public void onCancel(DialogInterface dialog) {
						}
					});
			progressDialog.show();
			this.start(); // 线程开始了

		}

		// //调用webService
		public void callWeb() {
			try {
				// /实例化soapObject对象
				SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
				// /设置参数in0,传入
//				rpc.setProperty(0, 1);
				// /设置传入webservice的参数teamid
				rpc.addProperty("teamid", 1);
				// /Android传输对象
				AndroidHttpTransport ht = new AndroidHttpTransport(URL);

				ht.debug = true;
				// /获得序列化的envelope
				SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
						SoapEnvelope.VER11);

				envelope.bodyOut = rpc;

				envelope.dotNet = true;

				envelope.setOutputSoapObject(rpc);
				// 调用WebService的方法
				ht.call(SOAP_ACTION, envelope);
				//用SoapObject对象接受返回结果
				SoapObject result = (SoapObject) envelope.bodyIn;

				if (result != null) {
					String str = result.toString();		
					System.out.println("return result--->"+str);
						// //取消进去对话框
						progressDialog.dismiss();
						// /构造消息,验证通过
						Message message = handler.obtainMessage();
						Bundle bundle = new Bundle();
						message.what = 1;// /这是消息的类型
						bundle.putString("message", str);
						//将数据封装到Message对象中传递给线程之外的Handler
						message.setData(bundle);
						// 传送消息
						handler.sendMessage(message);
				}
				else
				{
					System.out.println(" vote faile");
				}
				return;
			} catch (Exception e) {
				System.out.println("IO error");
				progressDialog.dismiss();
				// /构造消息,验证通过
				Message message = handler.obtainMessage();
				Bundle bundle = new Bundle();
				message.what = 3;// /这是消息的类型
				bundle.putString("error", e.getMessage());
				//将数据封装到Message对象中传递给线程之外的Handler
				message.setData(bundle);
				// 传送消息
				handler.sendMessage(message);
				e.printStackTrace();
			}

		}

		@Override
		public void run() {
			// TODO Auto-generated method stub
			super.run();
			System.out.println("VoteThread----->"+ Thread.currentThread().getId());
			callWeb();

		}
  }
    
}
分享到:
评论

相关推荐

    Android 使用ksoap2调用Webservice实例

    使用ksoap2调用Webservice实例 需将lib文件夹设置为源文件夹 在AndroidManifest.xml文件中加入&lt;uses-permission android:name="android.permission.INTERNET" /&gt;

    Android 采用KSOAP2方式访问WebService

    本篇文章将深入探讨如何在Android中利用KSOAP2库来访问和使用WebService。 1. **SOAP与KSOAP2简介** SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境中交换结构化和类型化信息。...

    Android调用Webservice使用的ksoap2包

    本文将详细介绍如何使用Ksoap2来调用.NET WebService。 1. **理解SOAP**: SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它定义了一种标准的消息结构,允许不同系统之间的应用程序进行通信,...

    Android使用ksoap2+协程+handler实现WebService

    2. 创建协程:在需要调用WebService的地方,使用`launch`或`async`函数启动一个协程,确保在主线程之外执行网络请求。 ```kotlin CoroutineScope(Dispatchers.IO).launch { // WebService调用代码 } ``` 3. 使用...

    android用ksoap2调用webservice接口查询

    下面将详细讲解如何在Android中使用KSOAP2来调用Webservice接口进行查询操作。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它允许应用程序通过HTTP协议发送和接收数据,...

    在android中使用KSOAP2调用webservice

    总之,在Android中使用KSOAP2调用Web Service涉及了构建SOAP请求、设置参数、发送请求以及解析响应等多个环节。理解并熟练掌握这些步骤对于构建与服务器交互的应用至关重要。通过KSOAP2,开发者可以轻松地将Android...

    使用KSOAP2调用WebService

    本文将详细介绍如何在Android应用中使用KSOAP2来调用WebService。 首先,为了在Android项目中使用KSOAP2,你需要下载并添加对应的jar文件。你可以从Google Code仓库...

    android 利用ksoap调用webservice工具

    android 利用ksoap调用webservice工具

    Android中ksoap2-android调用WebService 实现天气预报

    ksoap2-android是一个轻量级的库,专为Android平台设计,用于调用基于SOAP的Web服务。SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,常用于Web服务。在这个教程中,我们将探讨如何使用...

    Android使用KSOAP调用webservice返回自定义类

    本篇文章将详细介绍如何在Android应用中使用KSOAP调用Web Service,并处理返回的自定义类。 一、理解KSOAP和SOAP KSOAP是Android平台上的一个开源库,用于处理SOAP请求和响应。SOAP是一种基于XML的协议,用于在...

    android开发--使用ksoap2调用webservice借鉴.pdf

    由于Android SDK自身并未提供专门用于调用WebService的库,所以我们通常会借助第三方库,比如KSOAP2,来实现这一功能。 KSOAP2是一个轻量级的、专门为移动设备设计的库,适用于Android系统。它可以方便地帮助开发者...

    在OPhone 中使用KSOAP2调用WebService

    详细讲解了怎么在OPhone 中使用KSOAP2调用WebService 附有例子

    Android通过ksoap2进行WebService网络通信demo

    本示例将详细介绍如何在Android中利用ksoap2库进行WebService网络通信。 首先,我们要理解SOAP(Simple Object Access Protocol),它是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。ksoap2则提供了...

    android开发--使用ksoap2调用webservice.pdf

    以下是如何在Android项目中使用KSOAP2的详细步骤: 1. **引入KSOAP2库**: 首先,你需要从官方源或第三方网站(如Google Code仓库)下载KSOAP2的Android版本。将下载的jar文件添加到你的Android项目的lib目录中,...

    android开发--使用ksoap2调用webservice.rar

    本教程将深入探讨如何在Android项目中集成并使用kSOAP2来调用Web服务。 首先,我们需要了解SOAP。SOAP是一种基于XML的数据交换协议,用于在分布式环境中交换结构化和类型化的信息。它的主要特点包括:可扩展性、...

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

    在调用Webservice时,通常会使用这些API来构建HTTP请求并解析返回的XML或JSON数据。 3. **Ksoap2库**:Ksoap2是一个轻量级的Android库,专门用于调用SOAP Web Services。在本实例中,我们将使用Ksoap2来与天气预报...

    android开发--使用ksoap2调用webservice[借鉴].pdf

    然而,Android SDK本身并未提供直接调用WebService的库,因此开发者通常会依赖第三方库,如KSOAP2,来进行这样的操作。 KSOAP2是一个轻量级的库,特别适合于Android环境,因为它体积小且易于集成。要使用KSOAP2,...

    xfire开发webservice以及Android利用ksoap2访问webservice

    本教程将深入探讨如何使用XFire开发Web服务,并在Android应用中通过KSOAP2进行调用。 首先,我们需要了解XFire的基础知识。XFire(现已被Apache CXF项目合并)是一个轻量级的Web服务框架,它支持SOAP、RESTful和XML...

Global site tag (gtag.js) - Google Analytics