android 服务器 交互,android与server端servlet交互

朋友让写一个关于android与server端servlet交互的demo,比项目中的例子要简单很多,入门的朋友可以参考下。

1.服务器端Servlet

核心代码:

/**

*

* 项目名称 JSONDemo

* 包 名 servlet

* 文 件 名 CustomerServlet.java

* 开 发 人 Administrator

* 描述信息 客户端验证用户登陆Servlet

* 发布日期 2012-4-6下午03:28:47

* 修改日期

* 修 改 人

* 版本信息 V1.0

*

*/

public class CustomerServlet extends HttpServlet {

private static final long serialVersionUID = 314719472293387358L;

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//登陆成功标志

String LOGIN_FLAG="";

//获得客户端提交用户名密码

String username = req.getParameter("username");

String password = req.getParameter("password");

//调用UserDAO中isLogin方法判断数据中用户名密码是否正确

boolean flag=UserDAO.isLogin(username, password);

try {

DataOutputStream output=new DataOutputStream(resp.getOutputStream());

if (flag) {

LOGIN_FLAG="success";

output.writeUTF("服务器端数据:"+LOGIN_FLAG);

System.out.println(LOGIN_FLAG);

output.writeInt(1);

output.close();

}else{

//登录失败

LOGIN_FLAG="failure";

System.out.println(LOGIN_FLAG);

output.writeUTF("服务器端数据:"+LOGIN_FLAG);

output.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.android客户端

ClientDemo 核心代码:

public class MainActivity extends Activity {

//private static final int REQUEST_CODE = 2;

HttpPost httpRequest=new HttpPost(UriAPI.HTTPCustomer);

EditText et_name;

EditText et_pwd;

TextView show_login;

Button btn_login;

Button btn_cancle;

ProgressDialog progressDialog;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//初始化登陆界面

btn_login=(Button) findViewById(R.id.btn_login);

btn_cancle=(Button) findViewById(R.id.btn_cancle);

et_name=(EditText) findViewById(R.id.et_name);

et_pwd = (EditText) findViewById(R.id.et_pwd);

show_login=(TextView) findViewById(R.id.show_login);

progressDialog = new ProgressDialog(this);

btn_login.setOnClickListener(new OnClickListener() {

@SuppressWarnings("unchecked")

@Override

public void onClick(View v) {

//通过AsyncTask类提交数据 异步显示

new AT().execute(et_name.getText().toString(),et_pwd.getText().toString());

}

});

}

public class UriAPI {

/** 定义一个Uri **/

public static final String HTTPCustomer ="http://10.0.1.9:8026/JSONDemo/servlet/CustomerServlet";

}

@SuppressWarnings("rawtypes")

class AT extends AsyncTask{

String result="";

@Override

protected void onPreExecute() {

//加载progressDialog

progressDialog.show();

}

@Override

protected Object doInBackground(Object... params_obj) {

CharSequence username="";

CharSequence password="";

username=et_name.getText();

password =et_pwd.getText();

if(!username.equals("")&&!password.equals("")){

//请求数据

HttpPost httpRequest = new HttpPost(UriAPI.HTTPCustomer);

//创建参数

List params=new ArrayList();

params.add(new BasicNameValuePair("username", username.toString()));

params.add(new BasicNameValuePair("password", password.toString()));

//params.add(new BasicNameValuePair("flag","0"));

try {

//对提交数据进行编码

httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));

HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);

//获取响应服务器的数据

if (httpResponse.getStatusLine().getStatusCode()==200) {

//利用字节数组流和包装的绑定数据

byte[] data =new byte[2048];

//先把从服务端来的数据转化成字节数组

data =EntityUtils. toByteArray((HttpEntity)httpResponse.getEntity());

//再创建字节数组输入流对象

ByteArrayInputStream bais = new ByteArrayInputStream(data);

//绑定字节流和数据包装流

DataInputStream dis = new DataInputStream(bais);

//将字节数组中的数据还原成原来的各种数据类型,代码如下:

result=new String(dis.readUTF());

Log.i("服务器返回信息:", result);

}

} catch(ClientProtocolException e){

e.printStackTrace();

}catch(UnsupportedEncodingException e){

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

return result;

}

@Override

protected void onPostExecute(Object result) {

//获得服务器返回信息成功后

show_login.setText(result.toString());

//取消进度条

progressDialog.cancel();

}

}

}

3.界面截图

3.1 未登录

7e97e912539e8cc8d7908ddfb2f407f4.png

3.2 登陆中

a55d941ed43cfb9d51b096f5745e6466.png

3.3 登陆成功

cca1c5e83a2972ed0458541fbe593f83.png

3.4 登陆失败

f2ab653ddf831429b3b16729b9a5149b.png

4.代码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值