Android下调用webservice的服务器端和客户端详解

本文详细解析了在Android中如何调用WebService进行通信。涵盖了服务器端和客户端的实现步骤,包括目录结构和具体实现的Demo,以QAuctionActivity为例展示Android客户端的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android下调用webservice,进行通信的demo.


服务器端的目录结构:




IUserService 

package com.service;


/**
 * @author Administrator
 *   用户接口
 */
public interface IUserService {

	public String login(String username,String password);
}

UserService

package com.service.impl;

import net.sf.json.JSONObject;
import com.service.IUserService;

public class UserService  implements IUserService{

	public String login(String username,String password) {
		
		System.out.println("username------>"+username);
		System.out.println("password---->"+password);
		JSONObject json=new JSONObject();
		json.put("MSG", "登陆成功");
		return json.toString();
	}

}


客户端(Android)目录结构




QAuctionActivity


package com.skyfront.activity;


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.skyfront.bean.Login;
import com.skyfront.qauction.activity.R;

public class QAuctionActivity extends Activity {

	private Button okButton;
	private EditText username;
	private EditText password;
	Handler handler;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		okButton = (Button) this.findViewById(R.id.btnLogin);
		username = (EditText) this.findViewById(R.id.lblAccount);
		password = (EditText) this.findViewById(R.id.lblpassword);

		okButton.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				Login login=new Login();
				login.setUsername(username.getText().toString());
				login.setPassword(password.getText().toString());
				new MyThread(handler, login).start();
			}
		});

		handler=new Handler()
		{
			@Override
			public void handleMessage(Message msg) {
				Toast.makeText(QAuctionActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT ).show();
				super.handleMessage(msg);
			}
		};

	}
}

MyThread

package com.skyfront.activity;

import org.json.JSONException;
import org.json.JSONObject;

import android.os.Handler;
import android.os.Message;

import com.skyfront.bean.Login;
import com.skyfront.util.SoapUtil;

public class MyThread extends Thread {
	Handler handler;
	Login login;
	  
	  public MyThread(Handler handler,Login login)
	  {
		  this.handler=handler;
		  this.login=login;
	  }
	  
	  public void run()
	  {
		  
		   String result=new SoapUtil().sendRequest(login);
		   System.out.println("result:"+result);
		   try {
				JSONObject json=new JSONObject(result);
				result=(String)json.get("MSG");
			} catch (JSONException e) {
				e.printStackTrace();
			}
		      Message msg=handler.obtainMessage();
			  msg.obj=result;
			  handler.sendMessage(msg);
		  
	  }
}

SoapUtil


package com.skyfront.util;

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

import com.skyfront.bean.Login;

public class SoapUtil {
	public static final String NAMESPACE="http://android.googlepages.com/";
	public  String SERVICENAME="login";
	private static String URL = "http://192.168.0.70:8080/QAuction/services/login";
	public SoapObject result=null;
	public SoapObject rpc=null;
	public String sendRequest(Login login)
	{
		rpc=new SoapObject(NAMESPACE,SERVICENAME);
		rpc.addProperty("username",login.getUsername());
		rpc.addProperty("password", login.getPassword());
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
		envelope.bodyOut = rpc;
		envelope.dotNet = true;
		envelope.setOutputSoapObject(rpc);
		HttpTransportSE ht = new HttpTransportSE(URL);
		ht.debug = true;
		try
		{
			ht.call(NAMESPACE+SERVICENAME, envelope);
			result=(SoapObject)envelope.bodyIn;
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		return result.getPropertyAsString(0);
	}
}

完整代码下载地址,点击这里



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值