`
rocky225
  • 浏览: 11409 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Android与(Servlet)服务器交互

 
阅读更多
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;
	
	@Override
	public 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 对象,传入一个Uri
					HttpPost 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


分享到:
评论

相关推荐

    Android与servlet服务器交互

    本教程将深入讲解如何使Android客户端与Servlet服务器进行有效交互。 首先,我们从Android客户端开始。在Android应用中,我们通常使用HttpURLConnection或Apache HttpClient库来发送HTTP请求到服务器。然而,由于...

    详解Android客户端与服务器交互方式

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式...

    android+servlet服务器

    在IT行业中,Android和Servlet服务器的结合是一种常见的移动应用与后端服务交互方式。这个"android+servlet服务器"项目显然涉及到Android客户端与基于Servlet的Web服务器之间的通信,用于实现登录验证功能。以下将...

    Android与servlet交互

    在Android应用开发中,与服务器进行数据交互是常见的需求,而Servlet是一种在Java Web服务器上运行的组件,常用于处理客户端请求并返回响应。本文将详细介绍Android如何与Servlet进行交互,以及服务器端HTML代码在...

    Android和servlet交互的用户登录演示例子

    这个简单的例子对于初学者来说是一个很好的起点,通过实际操作,可以更好地理解和掌握Android与服务器之间的数据交互。在深入学习后,可以考虑引入更先进的网络库,以及考虑安全性、用户体验等方面的优化。

    android 客户端服务器 servlet

    在IT行业中,Android客户端与服务器的交互是移动应用开发中的重要环节。本项目涉及的是一个基于Java Servlet技术的服务器端实现,专为Android客户端设计,同时集成了MySQL数据库,为客户端提供数据存储和检索功能。...

    servlet服务器端和android客户端json数据交互

    在与服务器进行数据交互时,Android客户端需要使用HTTP库,比如HttpURLConnection或者OkHttp,来发送GET或POST请求到Servlet服务器。此外,为了序列化和反序列化数据,Android客户端需要理解JSON(JavaScript Object...

    android客户端与servlet服务端交互的很好的例子

    在Android开发中,客户端与服务器端的交互是应用程序的核心部分,尤其当涉及到数据交换和远程服务调用时。本示例主要关注Android客户端如何与Servlet服务端进行有效的通信,涉及了多种数据传输方式,如传递参数、...

    Servlet和Android网络交互1

    Servlet和Android之间的网络交互是移动应用开发中的常见需求,它使得Android客户端能够与服务器进行数据交换,实现诸如用户登录、数据同步、文件上传下载等功能。本篇将详细讲解Servlet和Android进行网络交互的基础...

    Android客户端与服务器交互,登录案例

    在Android客户端与服务器交互的过程中,登录功能是应用的基础部分,它允许用户验证身份并访问受保护的资源。在这个案例中,我们将深入探讨如何使用Android Studio作为客户端开发工具,MyEclipse作为服务器端开发环境...

    android客户端实现与服务器交互的用户登录功能

    在Android客户端实现与服务器交互的用户登录功能是一个基础但至关重要的任务,这涉及到客户端与服务端的通信协议、数据格式的处理以及用户认证的安全性。在这个过程中,Android应用需要发送登录请求到JavaWebServlet...

    Android+Servlet+MySQL

    这三者结合,构建了一个简单的移动应用数据交互系统,使得Android客户端可以与后台服务器进行数据通信,并通过MySQL数据库存储和检索信息。 首先,MySQL是一种关系型数据库管理系统,广泛应用于互联网服务中,用于...

    Android客户端和服务器交互例子

    总的来说,这个例子提供了一个基础的Android客户端与服务器交互的框架,对于初学者来说,理解这个过程对于进一步学习如何在Android应用中实现更复杂的服务器交互至关重要。包括如何发送请求,处理响应,以及如何在...

    android通过servlet服务器保存文件到手机

    在本场景下,我们将讨论如何在Android应用中通过Servlet服务器保存文件到手机。 首先,让我们看看服务器端的代码。在提供的Java代码中,定义了一个名为`download`的Servlet类,继承自`HttpServlet`。Servlet是Java ...

    Servlet和Android网络交互_MVP实现

    Servlet和Android之间的网络交互是移动应用开发中的常见需求,特别是在构建服务器端逻辑和客户端数据同步的应用时。在本项目中,我们使用Model-View-Presenter(MVP)设计模式来组织代码,使得代码结构清晰,易于...

    android-servlet-json-交互

    在Android开发中,与服务器进行数据交互是必不可少的环节,特别是在构建网络应用时。本教程主要探讨的是如何在Android客户端通过JSON格式与Java Servlet进行数据交换。JSON(JavaScript Object Notation)是一种轻量...

    android与server端servlet交互.pdf

    这里我们讨论的是Android与服务器端Servlet进行交互的一个基础案例,主要涉及网络请求、HTTP协议以及数据传输。 首先,服务器端的核心类是`CustomerServlet`,它继承自`HttpServlet`。`HttpServlet`是Java Servlet ...

    Android Servlet WEB http

    Android应用通常使用HttpClient或OkHttp等库发起HTTP请求,与部署在Web服务器上的Servlet进行交互。Servlet接收请求后,处理业务逻辑,然后返回响应给Android客户端。Android客户端可以通过GET或POST方法传递参数,...

    Android通过HttpClient访问服务器的servlet

    在Android开发中,有时我们需要与服务器进行数据交互,如登录验证、数据获取等。HttpClient库是Android系统提供的一种网络通信工具,它可以帮助我们实现HTTP协议的请求,包括GET和POST等方法。本篇将详细讲解如何...

    Android网盘系统(带servlet服务器)

    在这个项目中,我们使用Servlet服务器作为Android客户端与服务器进行数据交互的桥梁。Apache-Upload组件则是一个强大的文件上传工具,它允许用户在Web应用中方便地上传文件到服务器。该组件支持多文件上传,能处理大...

Global site tag (gtag.js) - Google Analytics