首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Android应用ksoap2包调用Webservice

2012-08-07 
Android使用ksoap2包调用Webservice1.在项目导入ksoap2包(见附件)2.在AndrioidMainfest.xml中加入连接网络

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 {@Overridepublic void onClick(View v) {ResponseVote();}        }// //调用线程函数public void ResponseVote() {VoteThread thread = new VoteThread(loginHandler);thread.dostart(1);}// //生成消息对象Handler loginHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.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() {@Overridepublic void onClick(DialogInterface dialog, int which) {progressDialog.cancel();}});progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {public void onCancel(DialogInterface dialog) {}});progressDialog.show();this.start(); // 线程开始了}// //调用webServicepublic void callWeb() {try {// /实例化soapObject对象SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);// /设置参数in0,传入//rpc.setProperty(0, 1);// /设置传入webservice的参数teamidrpc.addProperty("teamid", 1);// /Android传输对象AndroidHttpTransport ht = new AndroidHttpTransport(URL);ht.debug = true;// /获得序列化的envelopeSoapSerializationEnvelope 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对象中传递给线程之外的Handlermessage.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对象中传递给线程之外的Handlermessage.setData(bundle);// 传送消息handler.sendMessage(message);e.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();System.out.println("VoteThread----->"+ Thread.currentThread().getId());callWeb();}  }    }

热点排行