package com.rocky;import java.io.ByteArrayInputStream;import java.io.DataInputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;/*** * @author huangshuhao *思路: *把参数传给一个Uri,当该Uri接受到由post或get方法传过了的 *参数后,就交由一个Servlet来处理这些参数,类似网页中处理 *一样,都是提交参数后由Servlet来接受并处理 */public class LoginActivity extends Activity {private static final int REQUEST_CODE = 2;HttpPost httpRequest=new HttpPost(UriAPI.HTTPCustomer);Button loginButton;Button cancael;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main2);loginButton=(Button) findViewById(R.id.login);//注册监听器对象loginButton.setOnClickListener(new OnClickListener(){CharSequence username="";CharSequence password="";public void onClick(View v){//准备需要提交的数据,从手机界面抓取下来EditText ev_username =(EditText)findViewById(R.id.username);username=ev_username.getText();EditText ev_password=(EditText)findViewById(R.id.password);password=ev_password.getText();if(! username.equals("")&&! password.equals("")){//创建HttpPost 对象,传入一个UriHttpPost httpRequest =new HttpPost (UriAPI.HTTPCustomer);//创建参数List<NameValuePair> params=new ArrayList<NameValuePair>();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));//提交HttpPost对象和获取服务器HttpResponse响应数据完成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);//将字节数组中的数据还原成原来的各种数据类型,代码如下:String user = new String(dis.readUTF());}}catch(ClientProtocolException e){e.printStackTrace();}catch(UnsupportedEncodingException e){e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}});}public class UriAPI {/** 定义一个Uri **/public static final String HTTPCustomer ="http://192.168.157.100:8028/JSHWDemo/servlet/CustomerServlet";}}

服务器端代码

import java.io.DataOutputStream;public class CustomerServlet extends HttpServlet {public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {String username=request.getParameter("username");String password=request.getParameter("password");response.setContentType(CONTENT_TYPE);try{                        //做登录判断后返回的结果                       customer = cusDao.login(username,password);                       DataOutputStream output = new DataOutputStream(response.getOutputStream());if(customer! =null){                                //登录成功,向手机写数据//output.writeUTF(customer.getUsername());output.writeUTF("服务器端数据:用户名:" + username);output.writeUTF("服务器端数据:密码:" + password);output.writeInt(1);output.close();}else {//登录失败output.writeUTF("No");}}catch(Exception e){e.printStackTrace();}}}

注释已经很清楚了,看注释吧,如果还不行就看<Android手机访问服务器的一种数据交互方法.pdf>

http://wenku.baidu.com/view/e99cc78ca0116c175f0e4842.html


更多相关文章

  1. Android的AlertDialog的6种使用情景
  2. MySQL: 基于 android 远程连接
  3. android 数据库操作
  4. Android(安卓)保存浏览记录 SharedPreTools
  5. android读取usb设备数据
  6. android sqlite 中文乱码。。麻烦详细点
  7. mybatisplus的坑 insert标签insert into select无参数问题的解决
  8. python起点网月票榜字体反爬案例
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. Android Widget 小工具(两) 使用configur
  2. Android studio assets error:前言中不允
  3. Ubuntu下android源码下载
  4. Android 说说亮屏锁和键盘锁
  5. android 7.0系统解决拍照的问题android.o
  6. Android 关于动画设置问题。
  7. Android 复制和粘贴功能
  8. Android之ProGuard混淆器
  9. Android中的颜色设置
  10. android屏幕单位