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();
}
}
}
分享到:
相关推荐
使用ksoap2调用Webservice实例 需将lib文件夹设置为源文件夹 在AndroidManifest.xml文件中加入<uses-permission android:name="android.permission.INTERNET" />
本篇文章将深入探讨如何在Android中利用KSOAP2库来访问和使用WebService。 1. **SOAP与KSOAP2简介** SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境中交换结构化和类型化信息。...
本文将详细介绍如何使用Ksoap2来调用.NET WebService。 1. **理解SOAP**: SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它定义了一种标准的消息结构,允许不同系统之间的应用程序进行通信,...
2. 创建协程:在需要调用WebService的地方,使用`launch`或`async`函数启动一个协程,确保在主线程之外执行网络请求。 ```kotlin CoroutineScope(Dispatchers.IO).launch { // WebService调用代码 } ``` 3. 使用...
下面将详细讲解如何在Android中使用KSOAP2来调用Webservice接口进行查询操作。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它允许应用程序通过HTTP协议发送和接收数据,...
总之,在Android中使用KSOAP2调用Web Service涉及了构建SOAP请求、设置参数、发送请求以及解析响应等多个环节。理解并熟练掌握这些步骤对于构建与服务器交互的应用至关重要。通过KSOAP2,开发者可以轻松地将Android...
本文将详细介绍如何在Android应用中使用KSOAP2来调用WebService。 首先,为了在Android项目中使用KSOAP2,你需要下载并添加对应的jar文件。你可以从Google Code仓库...
android 利用ksoap调用webservice工具
ksoap2-android是一个轻量级的库,专为Android平台设计,用于调用基于SOAP的Web服务。SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,常用于Web服务。在这个教程中,我们将探讨如何使用...
本篇文章将详细介绍如何在Android应用中使用KSOAP调用Web Service,并处理返回的自定义类。 一、理解KSOAP和SOAP KSOAP是Android平台上的一个开源库,用于处理SOAP请求和响应。SOAP是一种基于XML的协议,用于在...
由于Android SDK自身并未提供专门用于调用WebService的库,所以我们通常会借助第三方库,比如KSOAP2,来实现这一功能。 KSOAP2是一个轻量级的、专门为移动设备设计的库,适用于Android系统。它可以方便地帮助开发者...
详细讲解了怎么在OPhone 中使用KSOAP2调用WebService 附有例子
本示例将详细介绍如何在Android中利用ksoap2库进行WebService网络通信。 首先,我们要理解SOAP(Simple Object Access Protocol),它是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。ksoap2则提供了...
以下是如何在Android项目中使用KSOAP2的详细步骤: 1. **引入KSOAP2库**: 首先,你需要从官方源或第三方网站(如Google Code仓库)下载KSOAP2的Android版本。将下载的jar文件添加到你的Android项目的lib目录中,...
本教程将深入探讨如何在Android项目中集成并使用kSOAP2来调用Web服务。 首先,我们需要了解SOAP。SOAP是一种基于XML的数据交换协议,用于在分布式环境中交换结构化和类型化的信息。它的主要特点包括:可扩展性、...
在调用Webservice时,通常会使用这些API来构建HTTP请求并解析返回的XML或JSON数据。 3. **Ksoap2库**:Ksoap2是一个轻量级的Android库,专门用于调用SOAP Web Services。在本实例中,我们将使用Ksoap2来与天气预报...
然而,Android SDK本身并未提供直接调用WebService的库,因此开发者通常会依赖第三方库,如KSOAP2,来进行这样的操作。 KSOAP2是一个轻量级的库,特别适合于Android环境,因为它体积小且易于集成。要使用KSOAP2,...
本教程将深入探讨如何使用XFire开发Web服务,并在Android应用中通过KSOAP2进行调用。 首先,我们需要了解XFire的基础知识。XFire(现已被Apache CXF项目合并)是一个轻量级的Web服务框架,它支持SOAP、RESTful和XML...