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);
}
}
完整代码下载地址,点击这里