Android 登陆功能的实现(访问WebServices 解析返回的JSON结果)
1、 WebServices返回的JSON结果
{
"Code": ,
"Result": [{
"ID": "",
"UserName": "",
"UserPwd": "",
"IsEnable": ""
}]
}
2、访问WEB服务代码
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.widget.Toast; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken; import org.apache.http.HttpResponse;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
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.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; import static java.net.Proxy.Type.HTTP;
//判读账号、密码
public static String GetUsers(String code, String pwd) {
String result = "";
InputStreamReader in = null;
try {
final String SERVER_URL = GlobalAppliaction.WebUrl + "LogIn"; // 定义需要获取的内容来源地址
HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求 List params = new ArrayList();
params.add(new BasicNameValuePair("username", code)); // 添加必须的参数
params.add(new BasicNameValuePair("userpwd", pwd)); // 添加必须的参数
request.setEntity(new UrlEncodedFormEntity(params, org.apache.http.protocol.HTTP.UTF_8)); // 设置参数的编码 HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈 // 解析返回的内容
if (httpResponse.getStatusLine().getStatusCode() != ) {
InputStream inputStream = httpResponse.getEntity().getContent();
in = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(in); StringBuffer strBuffer = new StringBuffer();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
strBuffer.append(line);
}
inputStream.close();
bufferedReader.close();
result = strBuffer.toString();
String errCode = "";
String strresult = "";
JSONObject root = new JSONObject(result);
errCode = root.getString("Code"); if (errCode.equals("")) { strresult = root.getString("Result");
/*
JSONArray resultArray = new JSONArray(strresult);//解析result
JSONObject resultobj = resultArray.getJSONObject(0);
resultobj.getString("UserName");
resultobj.getString("UserPwd");
*/ result = strresult;
return result;
} else {
return "-1";
} } } catch (IOException e) {
e.printStackTrace();
Log.d("debug", e.toString());
return "";
} catch (JSONException e) {
e.printStackTrace();
Log.d("debug", e.toString()); } finally { if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
3、读取访问WEB服务结果
try {
//启动后台异步线程进行连接webService操作,并且根据返回结果在主线程中改变UI
GetWebResultTask queryAddressTask = new GetWebResultTask();
//启动后台任务
queryAddressTask.execute(etname.getText().toString(), etpwd.getText().toString());
} catch (Exception ex) {
}
public class GetWebResultTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
String GetResult = "";
try {
GetResult = WebByHttp.GetUsers(params[], params[]);
DialogBase.showmessage(LogIn.this, "GetResult:" + GetResult, "doInBackground");
} catch (Exception e) {
e.printStackTrace();
}
//将结果返回给onPostExecute方法
return GetResult;
}
@Override
//此方法可以在主线程改变UI
protected void onPostExecute(String result) {
// 将WebService返回的结果显示在TextView中
tvresult.setText(result);
try {
if (result=="") {
DialogBase.showmessage(LogIn.this, "网络连接有误,请检查网络地址配置信息!", "确定");
return;
}
if (result=="-1") {
DialogBase.showmessage(LogIn.this, "账号或密码有误!", "确定");
} else {
Intent itent = new Intent(LogIn.this, MainActivity.class);
startActivity(itent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Android 登陆功能的实现(访问WebServices 解析返回的JSON结果)的更多相关文章
- AJAX html 传输json字符串&&巧妙运用eval()来解析返回的JSON字符串
1.AJAX html 传输json字符串: js方法如下: function saveRetYwlsh(){ var xmbh = document.getElementById("xmb ...
- 【转】Jquery ajax方法解析返回的json数据
转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...
- 使用Python解析豆瓣上Json格式数据
现在的API接口多为xml或json,json解析更简洁相对xml来说 以豆瓣的API接口为例,解析返回的json数据: https://api.douban.com/v2/book/1220562 ...
- Android ListView显示访问WebServices返回的JSON结果
1.WebServices的返回结果 2.ListView内容布局代码 <?xml version="1.0" encoding="utf-8"?> ...
- Android(java)学习笔记258:JNI之hello.c(c代码功能实现)指针语法解析
1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码: (1)hello.c : #include <jni.h> char* getHello() { //////// return ...
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
我们的Glide系列文章终于要进入收尾篇了.从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久. 在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包 ...
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
不知不觉中,我们的Glide系列教程已经到了第六篇了,距离第一篇Glide的基本用法发布已经过去了半年的时间.在这半年中,我们通过用法讲解和源码分析配合学习的方式,将Glide的方方面面都研究了个遍, ...
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
大家好,又到了学习Glide的时间了.前段时间由于项目开发紧张,再加上后来又生病了,所以停更了一个月,不过现在终于又可以恢复正常更新了.今天是这个系列的第五篇文章,在前面四篇文章的当中,我们已经学习了 ...
- Android(java)学习笔记202:JNI之hello.c(c代码功能实现)指针语法解析
1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码: (1)hello.c : #include <jni.h> char* getHello() { //////// return ...
随机推荐
- Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台
Prometheus简介 什么是 Prometheus Prometheus是一个开源监控报警系统和时序列数据库 主要功能 多维数据模型(时序由 metric 名字和 k/v 的 labels 构成) ...
- 笔记: SpringBoot + VUE实现数据字典展示功能
最近一直在写前端,写得我贼难受,从能看懂一些基础的代码到整个前端框架撸下来鬼知道我经历了啥(:´д`)ゞ 项目中所用到的下拉菜单的值全部都是有数据库中的数据字典表来提供的,显示给用户的是的清晰的意思, ...
- 给你的Kubernetes集群建一个只读账户(防止高管。。。后)
给你的Kubernetes集群建一个只读账户 需求:我们知道搭完k8s集群会创建一个默认的管理员kubernetes-admin用户该用户拥有所以权限,有一天开发或测试的同学需要登录到k8s集群了解业 ...
- 完全依赖QML实现播放器
前言 一直听闻QML无比强大好用,工作中需要扣一个同时播放视频的Demo,所以就趁这个机会研究了一下. 效果图和源码 源码仓库 主要设计 主页面QML import QtQuick 2.12 impo ...
- Java基础IO流 ,文件读取,由易至难
最基础的读取文件 import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;imp ...
- 关于CSS设置页面背景图的一些疑问
关于背景图片的位置其background-position设置背景图片的位置有两种方式,一种是是根据像素设置,第二种根据百分比设置,第一种根据像素的位置是很简单的,只是关于百分比这个设置理解特别容易出 ...
- Python读取和写入文件
1 从文件中读取数据 1.1 读取整个文件 创建名为test的txt文本文件,添加内容如下所示: 123456789023456789013456789012 实现代码: with open('tes ...
- 【译文连载】 理解Istio服务网格(第六章 可观测性)
全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 本文目录 第6章 可观测性 6.1 分布式调用链跟踪(tracing) 6.1.1 基本概念 6.1.2 Ja ...
- vue的子组件不能进行router的切换
在用vue开发过程中,偶然一次使用在子组件中进行router的切换,发现不起作用,后来才反应过来,子组件只是一个组件,vue的路由的切换只能是在父组件(也就是真正的页面)里面进行跳转!
- Go语言:如何解决读取不到相对路径配置文件问题
背景 项目交叉编译为可执行文件之后,在其他目录执行文件时提示找不到配置文件 2020/03/14 20:44:23 配置文件读取失败 open config.ini: no such file or ...