android 服务器json

简介: 引用:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=69596 首先在服务器端,星空采用的是SSH框架,struts2集合了json插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts2,所以 星空 就用...

引用:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=69596

首先在服务器端,星空采用的是SSH框架,struts2集合了json插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts2,所以 星空 就用装了一个JSON插件,这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端~~以下是代码,欢迎eoe的朋友们拍砖~~

首先,在服务器端搭建好SSH框架,具体细节就不在陈述~struts xml配置如下:

Java代码:

  1. <package name="login" extends="json-default">  
  2.      <action name="login" class="com.jclick.test.LoginAction" method="login">  
  3.         <result type="json"><paramname="includeProperties">result</param></result>  
  4.      </action>  
  5. </package>  
复制代码

手机端的代码如下:

首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:

Java代码:

  1. package com.jclick.cache;  
  2.    
  3. import com.jclick.bean.User;  
  4.   
  5. public class Cache {  
  6.        
  7.      private User User;  
  8.        
  9.      private Cache(){  
  10.            
  11.      }  
  12.      /** 构造单例 */  
  13.      private static class CacheHolder{  
  14.          private static final Cache INSTANCE = new Cache();  
  15.      }  
  16.      public Cache getInstance(){  
  17.          return CacheHolder.INSTANCE;  
  18.      }  
  19.      public User getUser() {  
  20.          return User;  
  21.      }  
  22.      public void setUser(User User) {  
  23.          this.User = User;  
  24.      }  
  25.    
  26. }  
复制代码

接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:

Java代码:

  1. package com.jclick.protocol;  
  2.    
  3. import java.io.BufferedReader;  
  4. import java.io.InputStreamReader;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.    
  8. import org.apache.http.HttpResponse;  
  9. import org.apache.http.NameValuePair;  
  10. import org.apache.http.client.HttpClient;  
  11. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  12. import org.apache.http.client.methods.HttpPost;  
  13. import org.apache.http.impl.client.DefaultHttpClient;  
  14. import org.apache.http.message.BasicNameValuePair;  
  15. import org.json.JSONException;  
  16. import org.json.JSONObject;  
  17.    
  18. public class BaseProtocol {  
  19.      private StringBuilder sb = new StringBuilder();  
  20.    
  21.      private HttpClient httpClient;  
  22.      private HttpPost httpRequest;  
  23.      private HttpResponse response;  
  24.    
  25.      private List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();  
  26.    
  27.      BaseProtocol() {  
  28.          httpClient = new DefaultHttpClient();  
  29.      }  
  30.    
  31.      /** 
  32.       * 向服务器端发送请求 
  33.       *  
  34.       * @param url 
  35.       * @throws Exception 
  36.       */  
  37.      protected void pack(String url) throws Exception {  
  38.          httpClient = new DefaultHttpClient();  
  39.          httpRequest = new HttpPost(url);  
  40.    
  41.          httpRequest.setEntity(new UrlEncodedFormEntity(nameValuePair));  
  42.          response = httpClient.execute(httpRequest);  
  43.      }  
  44.    
  45.      /** 
  46.       * 得到返回数据 
  47.       *  
  48.       * @param url 
  49.       * @return 
  50.       * @throws Exception 
  51.       */  
  52.      protected void parse() throws Exception {  
  53.          // TODO 状态处理 500 200  
  54.          if (response.getStatusLine().getStatusCode() == 200) {  
  55.    
  56.              BufferedReader bufferedReader2 = new BufferedReader(  
  57.                      new InputStreamReader(response.getEntity().getContent()));  
  58.              for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2  
  59.                      .readLine()) {  
  60.                  sb.append(s);  
  61.              }  
  62.          }  
  63.      }  
  64.    
  65.      /** 
  66.       * 向服务器发送信息 
  67.       *  
  68.       * @param key 
  69.       * @param value 
  70.       */  
  71.      public void addNameValuePair(String key, String value) {  
  72.          nameValuePair.add(new BasicNameValuePair(key, value));  
  73.      }  
  74.    
  75.      /** 
  76.       * 返回JSONObject对象数据模型 
  77.       *  
  78.       * @return 
  79.       * @throws JSONException 
  80.       */  
  81.      public JSONObject getJSON() throws JSONException {  
  82.          return new JSONObject(sb.toString());  
  83.      }  
  84.    
  85. }  
复制代码

接着是登陆协议,在这里星空只是模拟登陆使用的一个类,仅供大家参考: 

Java代码:

  1. package com.jclick.protocol;  
  2.    
  3. import org.json.JSONObject;  
  4.    
  5. import com.jclick.bean.User;  
  6.    
  7. public class LoginProtocol extends BaseProtocol{  
  8.        
  9.      private final static String URL = "http://localhost:8080/test/login";  
  10.        
  11.      public boolean checkLogin(User usr){  
  12.          try {  
  13.              pack(URL);  
  14.              parse();  
  15.              JSONObject obj = this.getJSON();  
  16.              if(obj.getString("result").equals("failed")){  
  17.                  return false;  
  18.              }else{  
  19.                  return true;  
  20.              }  
  21.          } catch (Exception e) {  
  22.              e.printStackTrace();  
  23.              return false;  
  24.          }  
  25.      }  
  26.    
  27. }  
复制代码

然后是User实体类,主要用于保存用户信息:

Java代码:

  1. package com.jclick.bean;  
  2.    
  3. public class User {  
  4.      private String username;  
  5.      private String password;  
  6.      public String getUsername() {  
  7.          return username;  
  8.      }  
  9.      public void setUsername(String username) {  
  10.          this.username = username;  
  11.      }  
  12.      public String getPassword() {  
  13.          return password;  
  14.      }  
  15.      public void setPassword(String password) {  
  16.          this.password = password;  
  17.      }  
  18.    
  19. }  
复制代码

最后就是LoginActivity里边判断登陆的代码了,仅贴一个判断登陆的代码:

Java代码:

  1. private void checkedData(){  
  2.      username = ((EditText)findViewById(R.id.username)).getText().toString();  
  3.      password = ((EditText)findViewById(R.id.password)).getText().toString();  
  4.         
  5.      User user = new User();  
  6.      user.setUsername(username);  
  7.      user.setPassword(password);  
  8.      LoginProtocol login = new LoginProtocol();  
  9.      boolean result = login.checkLogin(user);  
  10.        
  11.      if(result){                 SpiderCache.getInstance().setUserSession(user);  
  12.          Toast.makeText(getApplicationContext(), "登录成功", 1000).show();  
  13.         Intent intent = new Intent ();  
  14.          intent.setClass(LoginActivity.this,WelcomeActivity.class);  
  15.          startActivity(intent);  
  16.      }else{              Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();  
  17.      }  
  18. }  
复制代码
相关文章
|
4月前
|
JSON JavaScript 前端开发
怎么安装JSON服务器?JSON服务器最新安装教程
JSON Server是一款轻量级工具,基于Node.js运行,可通过单个JSON文件快速模拟RESTful API,适用于开发与测试场景。其支持CRUD操作、自定义路由及高级功能如排序、搜索、分页等,同时允许通过中间件扩展功能。为确保安全性,建议在受控环境中使用,并避免处理敏感数据。此外,还有Mirage JS、Mockoon、WireMock和Postman等替代方案,可根据项目需求选择合适的工具。
168 0
|
JSON 数据处理 数据安全/隐私保护
Ktor库的高级用法:代理服务器与JSON处理
Ktor库的高级用法:代理服务器与JSON处理
|
8月前
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
1503 5
|
9月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
1369 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
11月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
225 1
|
11月前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
245 0
|
11月前
|
JSON Android开发 数据格式
Android c++ core guideline checker 应用问题之JSON compilation database的定义如何解决
Android c++ core guideline checker 应用问题之JSON compilation database的定义如何解决
|
JSON 编解码 Apache
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
137 1
|
前端开发 Java API
Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器
191 0
|
JSON 数据格式 iOS开发
!!! iOS开发网络篇—发送json数据给服务器以及多值参数
注:GET请求,请求参数放在URL上;POST请求,请求参数建议用JSON格式放在请求体里面 一、发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.
1630 0

热门文章

最新文章