- 浏览: 51913 次
- 性别:
- 来自: 杭州
最新评论
-
gintama:
duduli 写道http://duduli.iteye.co ...
关于google map只显示网格的问题 -
duduli:
http://duduli.iteye.com/blog/12 ...
关于google map只显示网格的问题
附件有完整代码
登录界面:
登录的Activity:
package com.example.knowledgedemo; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; 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 com.example.entity.loginPerson; import com.example.utils.HttpUtil; import com.example.utils.ToastUtil; import com.google.gson.Gson; /** * 知识点:handler的使用、服务端客户端交互、Json、Gson、 * @author somebody * */ public class LoginDemo extends Activity { private EditText loginname, password; private Button login; private ProgressDialog progressdialog; private String name, pwd; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.login); loginname = (EditText) findViewById(R.id.loginname); password = (EditText) findViewById(R.id.password); login = (Button) findViewById(R.id.login); login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { login();//点击登录按钮 } }); } private void login() { showProgressDialog();//显示进度框 new Thread() { public void run() { requestServer();//请求服务器 } }.start(); } private void showProgressDialog() { if (progressdialog == null) { progressdialog = new ProgressDialog(this); } if (progressdialog.isShowing()) { progressdialog.dismiss(); } progressdialog.setTitle("提示"); progressdialog.setMessage("正在登陆.."); progressdialog.show(); } private Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); progressdialog.dismiss(); switch (msg.what) { case 0: ToastUtil.longToast(getApplicationContext(), R.string.network_ok);//Toast 提示信息、登录成功 break; case 1: ToastUtil.longToast(getApplicationContext(), R.string.network_not_ok);//登录失败 break; case 2: ToastUtil.longToast(getApplicationContext(), R.string.network_not_ok);//TimeOut 网络连接失败 break; default: break; } } }; private void requestServer(){ name = loginname.getText().toString(); pwd = password.getText().toString();//获取用户名密码 loginPerson person = new loginPerson(); person.setLoginName(name); person.setPassWord(pwd); Gson g = new Gson(); /* * Gson将person对象转换为Json格式的字符串 * 此时obj = {"loginName":"1","passWord":"1"} * */ String obj = g.toJson(person); String result = HttpUtil.httpPostCodeParams("login",obj);//请求服务端、获取返回值 JSONObject resultObject; if(result.startsWith("TimeOut")||result.length()==0){ handler.sendEmptyMessage(2);//请求服务端超时 }else{ try { //如果不超时、返回的数据格式 {"result":"0"} resultObject = new JSONObject(result); result = resultObject.getString("result"); } catch (JSONException e) { e.printStackTrace(); } if(result.equals("0")){ handler.sendEmptyMessage(0);//登录成功 }else if(result.equals("1")){ handler.sendEmptyMessage(1);//登录失败 } } } }
存放用户名密码的LoginPerson对象:
package com.example.entity; public class LoginPerson { private String loginName; private String passWord; public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } }
请求服务端的方法:
package com.example.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.net.URL; public class HttpUtil { /** * 传递命令和参数 * * @param postCode * @param obj * @return */ public static String httpPostCodeParams(String postCode, String obj) { StringBuilder sbResponse = new StringBuilder(); URL url; try { //请求的url = http://10.33.1.204:8888/KnowledgeManagementServer/Servlet/ 加 postCode //服务端ip、端口、服务端项目名、服务端使用servlet+命令的方式响应请求 url = new URL(getUrl(postCode)); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setReadTimeout(Constants.connectTimeout); conn.setConnectTimeout(Constants.connectTimeout); conn.setDoOutput(true); conn.setDoInput(true); DataOutputStream outStream = new DataOutputStream( conn.getOutputStream()); outStream.writeUTF(obj.toString()); outStream.flush(); outStream.close(); int cah = conn.getResponseCode(); if (cah != 200) { return "TimeOut"; } BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream(), "utf-8")); String lines; while ((lines = reader.readLine()) != null) { sbResponse.append(lines); } conn.disconnect(); } catch (SocketTimeoutException e) { return "TimeOut"; } catch (IOException e) { e.printStackTrace(); } return sbResponse.toString(); } private static String getUrl(String postCode) { return Constants.server + postCode; } }
Servlet相应类:
package com.ck.servlet; import java.io.DataInputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ck.entity.LoginPerson; import com.google.gson.Gson; import com.google.gson.JsonObject; public class LoginServlet extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); PrintWriter out = resp.getWriter(); DataInputStream dis = new DataInputStream(req.getInputStream()); String param = dis.readUTF(); Gson g = new Gson(); LoginPerson person = g.fromJson(param, LoginPerson.class); JsonObject jsonObject = new JsonObject(); if(person.getLoginName().equals("1")&&person.getPassWord().equals("1")){ jsonObject.addProperty("result", "0"); }else{ jsonObject.addProperty("result", "1"); } //{"result":"0"} out.print(jsonObject.toString()); out.flush(); out.close(); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doPost(req, resp); } }
- LoginDemo.rar (1.7 MB)
- 下载次数: 21
发表评论
-
获取手机IMEI值
2013-01-06 10:24 2682public String getImei() { ... -
android 使用第三方包后图片资源混乱
2012-09-12 16:20 1109第三方包中、使用以下方式获取资源文件/控件: i ... -
android 删除模拟器上的文件/文件夹
2012-08-20 17:37 1582例如: 删除 sdcard/temp/a.xml ... -
Hudson的配置
2012-03-05 18:37 15571.下载hudson的war包 http://h ... -
android文件存取
2012-02-28 13:59 765写的方法: private void write(S ... -
Prefefence的使用
2012-02-28 13:21 938取: //ck 是文件名 SharedPrefer ... -
Notification和NotificationManager的使用
2012-02-27 17:14 1275//主要代码 package com.ck; ... -
BroadCastReceive的使用
2012-02-27 14:09 11521.在activity中 Intent i = n ... -
Intent的属性
2012-02-24 14:47 3662/** 1.ComponentName Com ... -
android 基础
2012-02-20 14:53 774四大天王:acticity 数据的展示 ... -
Handler的使用一
2012-01-31 16:49 806//activity里面不能做耗时比较长的操作、不仅会导致 ... -
android开发、使用Json传递数据、
2011-12-05 18:34 2614//记录一下、留给自己的、 public stati ... -
自定义ListView
2011-12-05 17:43 659/** 这个Demo不错、看懂了之后神马样的listvi ... -
没有继承Activity的类中使用Preference
2011-11-30 17:11 1188/** getSharedPreferences是依赖上 ... -
android入门、增删改查
2011-11-28 17:47 699/** 小东西、入门的时候做的、留下来、 运行前导 ... -
关于google map只显示网格的问题
2011-11-28 15:50 2293/** 先声明我自己没有搞定、之前有弄出来过一次、 ... -
网址收藏
2011-11-17 16:31 561icon: www.iconfinder. ... -
申请Android Google Map API key
2011-11-08 10:05 9151.首先找到debug keystore路径: 打开Ecli ... -
保存bitmap对象到SD卡
2011-11-07 10:25 2715public static void saveBitmap ... -
使用intent传递bitmap对象
2011-11-03 18:53 1603/** * 存: i.putExtra("0& ...
相关推荐
本资料“Android客户端与服务器端的json数据交互(服务端客户端)”将深入探讨如何在Android应用中实现这一功能。 一、JSON简介 JSON是一种独立于语言的数据交换格式,它基于ECMAScript的一个子集,易于人阅读和编写...
在本节"057集-Android客户端与服务端交互-服务端代码"的视频教程中,我们将深入探讨Android应用程序如何与服务端进行有效且安全的通信,这对于开发任何涉及网络功能的Android应用来说都是至关重要的。这个教程针对的...
在IT行业中,客户端和服务端交互是应用程序开发的核心部分,特别是在移动应用开发中,如安卓客户端。这个主题涉及到了客户端(Android应用)如何通过网络通信与服务端(通常为Web服务器)进行数据交换,以实现功能如...
本篇将详细介绍如何在Android中使用JSON进行服务端和客户端的数据交换。 首先,了解JSON的基本结构。JSON是一种基于文本的格式,主要由键值对组成,可以表示数组和对象。对象以大括号{}包围,键值对之间用逗号分隔...
本项目"android使用JSON进行网络数据交换(服务端、客户端)的实现"旨在为学生提供一个完整的示例,帮助他们理解和掌握如何在Android平台上通过JSON与服务器进行数据通信。以下是对该项目涉及的知识点的详细解释: 1....
3. **数据序列化与反序列化**:在传输过程中,数据通常需要被序列化为JSON或XML格式,因此需要了解Gson、Jackson或Fastjson等库的使用,以便于将对象转换为字符串进行传输,并在接收端反序列化回对象。 4. **消息推...
在Android客户端与服务器端的JSON数据交互中,开发者通常会涉及到多个关键知识点,这些知识点是构建现代移动应用不可或缺的部分。以下是对这些知识点的详细说明: 1. JSON(JavaScript Object Notation):JSON是一...
Android提供了Gson库用于JSON对象和Java对象之间的转换,也可以使用org.json库进行手动解析。 服务器返回的数据,Android客户端需要解析后才能使用。对于JSON数据,我们可以使用Gson或Jackson库将其转化为Java对象...
这个项目涵盖了 Android 客户端与服务端的交互,涉及到了多个关键知识点,包括但不限于以下几个方面: 1. **Android 开发基础**:首先,你需要熟悉 Android 应用的基本架构,如 Activity、Fragment、Intent 以及 ...
为了提高性能和用户体验,可以使用异步请求,如使用AsyncTask或Handler。同时,考虑使用缓存策略,减少不必要的网络请求。 8. **安全考虑** 当涉及到敏感数据交换时,务必使用HTTPS协议以保证数据的安全性。同时...
如果使用Gson,只需定义对应的Java模型类,Gson就能自动将JSON转换为对象。 此外,错误处理也是不可或缺的部分。网络请求可能会出现各种问题,如网络连接失败、超时、服务器错误等。开发者通常会使用try-catch语句...
本示例项目"安卓listview相关相关-android客户端请求.netWeb服务端请求后的数据json解析展示在listview上.rar"聚焦于如何从.NET Web服务获取JSON数据,并在Android客户端的ListView中进行解析和展示。以下是关于这一...
在Android开发中,客户端与服务端之间的数据交互是应用程序的核心部分。这个过程涉及到网络通信、数据解析、数据上传以及服务端的反馈处理。本篇将深入探讨这些关键知识点。 首先,客户端与服务端的通信通常基于...
在学习这个源码时,开发者可以深入了解Android客户端与服务端的交互过程,理解网络通信协议,提升数据库操作和JSON处理能力,同时也能掌握服务器端的开发流程。这对于提升Android应用开发的整体水平是非常有帮助的。...
4. 异步处理:为了保证用户体验,客户端使用异步任务(AsyncTask)、Handler或Retrofit等工具进行后台操作,如网络请求、数据加载等。 二、服务端设计与实现 1. 服务器架构:仿QQ服务端可能采用了基于Socket编程的...
6. **Android异步处理**:为了防止网络操作阻塞UI线程,Android客户端通常使用AsyncTask、Handler、IntentService或现代的LiveData和Coroutines等机制来执行网络请求。这些方法可以在后台线程中执行耗时任务,确保...
可以使用`Gson`、`Jackson`或者`org.json`库来完成JSON的解析工作。 3. **UI设计**:登录界面的构建通常涉及`XML`布局文件,使用`EditText`控件获取用户输入,`Button`触发登录事件,配合`AlertDialog`显示登录结果...
在Android应用开发中,客户端和服务端的连接是实现数据交互的关键环节。这个小型的网络服务器与安卓客户端的连接示例可能涵盖了HTTP、HTTPS协议、WebSocket、Socket编程等基础概念。以下将详细介绍这些知识点: 1. ...