web 端api开发代码样式如下:
package com.hipad.controller;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.gson.Gson;
import com.hipad.config.UpConfig;
import com.hipad.controller.console.CategoryController;
import com.hipad.controller.console.LearningMaterialsController;
import com.hipad.core.LoginEnum;
import com.hipad.core.shiro.CustomerAuthenticationToken;
import com.hipad.core.utils.SecurityUtil;
import com.hipad.core.utils.ShiroUtil;
import com.hipad.model.Category;
import com.hipad.model.Content;
import com.hipad.model.member.Member;
import com.hipad.model.valid.ValidAdmin;
import com.hipad.service.console.AdminService;
import com.hipad.service.console.CategoryService;
import com.hipad.service.console.ContentService;
import com.hipad.service.console.LogService;
import com.hipad.service.member.MemberService;
import com.hipad.util.DateUtil;
import com.hipad.util.IpUtil;
import com.hipad.util.ReturnUtil;
import com.hipad.util.UuidUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.util.TextUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hipad.model.console.Admin;
@Controller
@RequestMapping
public class ApiController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private CategoryService categoryService;
@Autowired
private ContentService contentService;
@Autowired
private MemberService memberService;
@Autowired
AdminService adminService ;
@Autowired
private LogService logService;
public final static int NUM_CONTENT_PER_PAGE = 1000;
public final static String NUM_CONTENT_PER_PAGE_STR = "10";
@Autowired
private UpConfig upConfig;
List<Content> baseSmallPicList = new ArrayList<Content>();
List<Content> baseLargePicList = new ArrayList<Content>();
/**
* home
*
* @param map
* @return 首页
* @author
*/
//json
@RequestMapping(value="/api/",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String indexJson(ModelMap map) {
String cdnUrl = upConfig.getUpCdn();
List<Category> list = categoryService.getAllTop();
List<Content> animteImgs = contentService.getAnimteImgs();
List<Content> homePagePicViewer = contentService.getHomePagePictureViewer();
baseLargePicList.clear();
baseSmallPicList.clear();
List<Category> listBase = categoryService.getAllBase();
for(Category c : listBase ){
List<Category> clist = c.getChildren();
for(Category cs : clist ){
String cn = cs.getCategoryName();
Content childContent = contentService.findByContentCategoryId(cs.getUid()) ;
if(childContent != null){
childContent.setParentName(c.getCategoryName());
if((!TextUtils.isEmpty(cn))&& (cn.equals(CategoryController.LARGE_PIC))){
baseLargePicList.add(childContent);
}else if((!TextUtils.isEmpty(cn))&& (cn.equals(CategoryController.SMALL_PIC))){
baseSmallPicList.add(childContent);
}
}
}
}
List<Content> newsList = contentService.getNewsList();
if(newsList.size() > 3){
newsList = newsList.subList(0,3);
}
map.addAttribute("list", list);
map.addAttribute("animteImgs", animteImgs);
map.addAttribute("homePagePicViewer", homePagePicViewer);
map.addAttribute("newspid", contentService.getNewsUid());
map.addAttribute("newsList", newsList);
map.addAttribute("baseSmallPicList", baseSmallPicList);
map.addAttribute("baseLargePicList", baseLargePicList);
String jsonString = JSON.toJSONString(map);
return jsonString;
}
/**
* Article list
*
* @param map
* @return article list
* @author
*/
@ResponseBody
@RequestMapping(value="/list/api/{pid}",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
public String listJson(ModelMap map,@PathVariable("pid")String pid) {
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
Category currentOne = categoryService.findOne(pid);
map.addAttribute("currentOne", currentOne);
List<Category> categoryList = categoryService.getAllCategoryByPid(pid);
map.addAttribute("categoryList", categoryList);
if(categoryList.size() != 0){
// PageHelper.startPage(0,NUM_CONTENT_PER_PAGE,"");
String cuttentContentCategoryid = categoryList.get(0).getUid() ;
List<Content> contentList = contentService.findContentsByCategoryId(cuttentContentCategoryid) ;
map.addAttribute("contentList", contentList);
/* PageInfo<Content> page = new PageInfo<>(contentList);
map.addAttribute("page", page);
map.addAttribute("cuttentContentCategory", cuttentContentCategoryid);*/
}
String jsonString = JSON.toJSONString(map);
return jsonString;
}
//json
@RequestMapping(value="/list/content/api/{pid}",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String listContentJson(ModelMap map,@PathVariable("pid")String pid) {
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
Category currentOne = categoryService.findOne(pid);
map.addAttribute("currentOne", currentOne);
List<Category> categoryList = categoryService.getAllCategoryByPid(pid);
map.addAttribute("categoryList", categoryList);
String cuttentContentCategoryid = pid;
/// PageHelper.startPage(0,NUM_CONTENT_PER_PAGE,"");
List<Content> contentList = contentService.findContentsByCategoryId(cuttentContentCategoryid) ;
map.addAttribute("contentList", contentList);
/*PageInfo<Content> page = new PageInfo<>(contentList);
map.addAttribute("page", page);
map.addAttribute("cuttentContentCategory", cuttentContentCategoryid);
map.addAttribute("catSubCatNum", "0");*/
String jsonString = JSON.toJSONString(map);
return jsonString;
}
/**
* content
*
* @param
* @return contents of article
* @author thy
*/
//json
@RequestMapping(value="/viewcontent/api",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String viewcontentJson(ModelMap map, @RequestParam("uid")String uid, @RequestParam("pid")String pid) {
Content mContent = contentService.findOne(uid) ;
mContent.setContentName(LearningMaterialsController.titlePrefix+mContent.getContentName()+LearningMaterialsController.titleSuffix) ;
map.addAttribute("content", mContent);
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list",list);
*/
Category currentOne = categoryService.findOne(pid);
map.addAttribute("currentOne", currentOne);
List<Category> categoryList = categoryService.getAllCategoryByPid(pid);
map.addAttribute("categoryList", categoryList);
map.addAttribute("cuttentContentCategory", mContent.getContentCategoryId());
/* map.addAttribute("catSubCatNum", categoryList.size() == 0 ? "0" : "1");*/
String jsonString = JSON.toJSONString(map);
return jsonString;
}
/**
* article list by category
*
* @param
* @return
* @author thy
*/
@ResponseBody
@RequestMapping(value="/getcontentlistbycategory/api",method = {RequestMethod.GET, RequestMethod.POST})
public String getcontentlistbycategoryJson(ModelMap map,@RequestParam("childid")String childid,@RequestParam ("pid")String pid) {
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
Category currentOne = categoryService.findOne(pid);
map.addAttribute("currentOne", currentOne);
List<Category> categoryList = categoryService.getAllCategoryByPid(pid);
map.addAttribute("categoryList", categoryList);
PageHelper.startPage(0,NUM_CONTENT_PER_PAGE,"");
List<Content> contentList = contentService.findContentsByCategoryId(childid) ;
PageInfo<Content> page = new PageInfo<>(contentList);
map.addAttribute("page", page);
map.addAttribute("cuttentContentCategory", childid);
String jsonString = JSON.toJSONString(map);
return jsonString;
}
/**
* article
*
* @param map
* @return 文章页
* @author wangmingli
*/
@ResponseBody
@RequestMapping(value ="/article/api/{pid}", method ={RequestMethod.GET, RequestMethod.POST})
public String articleJson(ModelMap map, @PathVariable("pid")String pid) {
Content content = contentService.findByContentCategoryId(pid);
content.setContentName(LearningMaterialsController.titlePrefix+content.getContentName()+LearningMaterialsController.titleSuffix) ;
map.addAttribute("content", content);
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
String jsonString = JSON.toJSONString(map);
return jsonString;
}
//add json
@RequestMapping(value ="/article/content/api/{pid}",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String articleContentJson(ModelMap map, @PathVariable("pid")String pid) {
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
Content content = contentService.findOne(pid);
content.setContentName(LearningMaterialsController.titlePrefix+content.getContentName()+LearningMaterialsController.titleSuffix);
Category category = categoryService.findOne(content.getContentCategoryId());
map.addAttribute("category", category);
map.addAttribute("content", content);
String jsonString = JSON.toJSONString(map);
return jsonString;
}
//aad josn
@RequestMapping(value = "/articlenav/api/{pid}",method = {RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String articleNavJson(ModelMap map, @PathVariable("pid")String pid, HttpServletRequest request) {
/* List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);*/
Category category = categoryService.findOne(pid);
Content content = contentService.findByContentCategoryId(pid);
content.setContentName(LearningMaterialsController.titlePrefix+content.getContentName()+LearningMaterialsController.titleSuffix);
map.addAttribute("category", category);
map.addAttribute("content", content);
String jsonString = JSON.toJSONString(map);
return jsonString;
}
//aad josn
@RequestMapping(value = "/articlenav/api/all",method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public String articleNavJsonAll(ModelMap map, HttpServletRequest request) {
List<Category> list = categoryService.getAllTop();
map.addAttribute("list", list);
String jsonString = JSON.toJSONString(map);
return jsonString;
}
//test json
@RequestMapping(value = "/producesToJson", method ={RequestMethod.GET, RequestMethod.POST}, produces="text/html;charset=UTF-8")
@ResponseBody
public String producesToJson() {
Map map = new HashMap();
map.put("code", "200");
map.put("msg", "这是一句话,测试返回json是否乱码。");
return new Gson().toJson(map);
}
/**
* 用户登录
*
* @param member
* @param req
* @return
*/
@ResponseBody
@RequestMapping(value = "/login/api", method = {RequestMethod.GET, RequestMethod.POST})
public Object loginJson(Member member, HttpServletRequest req) {
if (StringUtils.isEmpty(member.getAccount())) {
return ReturnUtil.error("用户不能为空", null, null);
}
if (StringUtils.isEmpty(member.getPassword())) {
return ReturnUtil.error("密码不能为空", null, null);
}
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
Member mTmp = new Member();
mTmp.setAccount(member.getAccount());
Member tmp = memberService.getMember(mTmp);
if (tmp != null && encoder.matches(member.getPassword().trim(), tmp.getPassword())) {
tmp.setPassword(null);
req.getSession().setAttribute("loginMember", tmp);
Map<String, Object> success = new HashMap<String, Object>();
success.put("code", 1);
success.put("msg", "操作成功");
success.put("result", tmp);
return success;
} else {
Map<String, Object> error = new HashMap<String, Object>();
error.put("code", 0);
error.put("msg", "操作失败,账号密码信息异常.");
error.put("result", null);
return error;
}
}
@ResponseBody
@RequestMapping(value="/login/api6", method={RequestMethod.GET, RequestMethod.POST})
public Object loginPostJson6(ValidAdmin validAdmin, HttpServletRequest request){
if (StringUtils.isEmpty(validAdmin.getUsername())) {
return ReturnUtil.error("用户不能为空", null, null);
}
if (StringUtils.isEmpty(validAdmin.getPassword())) {
return ReturnUtil.error("密码不能为空", null, null);
}
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
ValidAdmin mTmp = new ValidAdmin();
mTmp.setUsername(validAdmin.getUsername());
Admin tmp = adminService.findByUsername(mTmp.getUsername());
CustomerAuthenticationToken token = new CustomerAuthenticationToken(validAdmin.getUsername(), validAdmin.getPassword(), false);
token.setLoginType(LoginEnum.ADMIN.toString());
//获取当前的Subject
Subject currentUser = SecurityUtils.getSubject();
try {
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证开始");
currentUser.login(token);
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证通过");
}catch(UnknownAccountException uae){
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证未通过,未知账户");
ReturnUtil.error("message", "未知账户");
}catch(IncorrectCredentialsException ice){
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证未通过,错误的凭证");
ReturnUtil.error("message", "密码不正确");
}catch(LockedAccountException lae){
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证未通过,账户已锁定");
ReturnUtil.error("message", "账户已锁定");
}catch(ExcessiveAttemptsException eae){
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证未通过,错误次数过多");
ReturnUtil.error("message", "用户名或密码错误次数过多");
}catch(AuthenticationException ae){
//通过处理Shiro的运行时AuthenticationException就可以控制用户登录失败或密码错误时的情景
logger.info("对用户[" + validAdmin.getUsername() + "]进行登录验证..验证未通过,堆栈轨迹如下");
ae.printStackTrace();
ReturnUtil.error("message", "用户名或密码不正确");
}
//if (tmp != null && encoder.matches(validAdmin.getPassword().trim(), tmp.getPassword()))
if (tmp != null && currentUser.isAuthenticated())
{
tmp.setPassword(null);
request.getSession().setAttribute("loginMember", tmp);
String ip = IpUtil.getIpAddr(request);
logService.insertLoginLog(validAdmin.getUsername(), ip, request.getContextPath());
Map<String, Object> success = new HashMap<String, Object>();
success.put("code", 1);
success.put("msg", "操作成功");
success.put("result", tmp);
return success;
} else {
Map<String, Object> error = new HashMap<String, Object>();
error.put("code", 0);
error.put("msg", "操作失败,账号密码信息异常.");
error.put("result", null);
return error;
}
}
@ResponseBody
@RequestMapping(value = "/logout/api", method = {RequestMethod.GET, RequestMethod.POST})
public Object logout(HttpServletRequest req) {
if(req.getSession().getAttribute("loginMember")!=null){
HttpSession session = req.getSession();
session.removeAttribute("loginMember");
}
Map<String, Object> data = new HashMap<String, Object>();
data.put("code", 1);
data.put("msg", "登出!");
data.put("result", null);
return data;
}
/**
* 用户注册
*
* @param member
* @param bindingResult
* @return
*/
@ResponseBody
@RequestMapping(value = "/register/api", method = {RequestMethod.POST})
public Object doRegist(@Valid Member member, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ReturnUtil.error("用户名或密码为空", null, null);
}
Example example = new Example(Member.class);
example.createCriteria().andCondition("account = ", member.getAccount());
Integer userCount = memberService.getCount(example);
if (userCount > 0) {
return ReturnUtil.error("用户名已存在", null, null);
}
if (StringUtils.isEmpty(member.getPassword())) {
return ReturnUtil.error("密码不能为空", null, null);
}
/* if (StringUtils.isEmpty(member.getPhoneMobile())) {
return ReturnUtil.Error("手机号码不能为空", null, null);
}*/
String Id = UuidUtil.getUUID();
member.setUid(Id);
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String password = passwordEncoder.encode(member.getPassword().trim());
member.setPassword(password);
member.setState(1);
member.setCreatedAt(DateUtil.getCurrentTime());
member.setUpdatedAt(DateUtil.getCurrentTime());
memberService.insert(member);
Map<String, Object> success = new HashMap<String, Object>();
success.put("code", 1);
success.put("msg", "操作成功");
success.put("result", null);
return success;
}
/**
* 修改密码
*
* @param req
* @param account
* @param oldPwd
* @param newPwd
* @return
*/
@ResponseBody
@RequestMapping(value = "/changePwd/api", method = {RequestMethod.GET, RequestMethod.POST})
public Object updatePassword(HttpServletRequest req, @RequestParam(value = "account", required = true) String account, @RequestParam(value = "oldPwd", required = true) String oldPwd, @RequestParam(value = "newPwd", required = true) String newPwd) {
Map<String, Object> data = new HashMap<String, Object>();
Member loginMember = (Member) req.getSession().getAttribute("loginMember");
if (loginMember == null) {
data.put("code", 0);
data.put("msg", "操作失败,请重新登录!");
data.put("result", null);
return data;
}
if (oldPwd == null || oldPwd.trim().equals("")) {
data.put("code", 0);
data.put("msg", "原密码不能为空!");
data.put("result", null);
return data;
}
if (newPwd == null || newPwd.trim().equals("")) {
data.put("code", 0);
data.put("msg", "新密码不能为空!");
data.put("result", null);
return data;
}
if (!account.trim().equals(loginMember.getAccount())) {
data.put("code", 0);
data.put("msg", "账号名称不正确!");
data.put("result", null);
return data;
} else {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
Member mTmp = new Member();
mTmp.setAccount(loginMember.getAccount());
Member tmp = memberService.getMember(mTmp);
if (encoder.matches(oldPwd.trim(), tmp.getPassword())) {
loginMember.setPassword(encoder.encode(newPwd.trim()));
memberService.update(loginMember);
data.put("code", 1);
data.put("msg", "操作成功!");
loginMember.setPassword(null);
data.put("result", loginMember);
return data;
} else {
data.put("code", 0);
data.put("msg", "原密码不正确!");
data.put("result", null);
return data;
}
}
}
@ResponseBody
@RequestMapping(value="/login/api5", method={RequestMethod.GET, RequestMethod.POST})
public Object loginPostJson(@Valid ValidAdmin validAdmin, BindingResult bindingResult, RedirectAttributes redirectAttributes, HttpServletRequest request){
if(bindingResult.hasErrors()){
Map<String, Object> failmap= new HashMap<String, Object>();
failmap.put("code", 1);
failmap.put("msg", "账号名称不正确");
failmap.put("result", null);
return failmap ;
}
String username = validAdmin.getUsername();
CustomerAuthenticationToken token = new CustomerAuthenticationToken(validAdmin.getUsername(), validAdmin.getPassword(), false);
token.setLoginType(LoginEnum.ADMIN.toString());
//获取当前的Subject
Subject currentUser = SecurityUtils.getSubject();
try {
//在调用了login方法后,SecurityManager会收到AuthenticationToken,并将其发送给已配置的Realm执行必须的认证检查
//每个Realm都能在必要时对提交的AuthenticationTokens作出反应
//所以这一步在调用login(token)方法时,它会走到MyRealm.doGetAuthenticationInfo()方法中,具体验证方式详见此方法
logger.info("对用户[" + username + "]进行登录验证..验证开始");
currentUser.login(token);
logger.info("对用户[" + username + "]进行登录验证..验证通过");
}catch(UnknownAccountException uae){
logger.info("对用户[" + username + "]进行登录验证..验证未通过,未知账户");
redirectAttributes.addFlashAttribute("message", "未知账户");
}catch(IncorrectCredentialsException ice){
logger.info("对用户[" + username + "]进行登录验证..验证未通过,错误的凭证");
redirectAttributes.addFlashAttribute("message", "密码不正确");
}catch(LockedAccountException lae){
logger.info("对用户[" + username + "]进行登录验证..验证未通过,账户已锁定");
redirectAttributes.addFlashAttribute("message", "账户已锁定");
}catch(ExcessiveAttemptsException eae){
logger.info("对用户[" + username + "]进行登录验证..验证未通过,错误次数过多");
redirectAttributes.addFlashAttribute("message", "用户名或密码错误次数过多");
}catch(AuthenticationException ae){
//通过处理Shiro的运行时AuthenticationException就可以控制用户登录失败或密码错误时的情景
logger.info("对用户[" + username + "]进行登录验证..验证未通过,堆栈轨迹如下");
ae.printStackTrace();
redirectAttributes.addFlashAttribute("message", "用户名或密码不正确");
}
//验证是否登录成功
if(currentUser.isAuthenticated()){
Session session = SecurityUtils.getSubject().getSession();
request.getSession().setAttribute("loginMember", validAdmin);
session.setAttribute("loginType",LoginEnum.ADMIN.toString());
logger.info("用户[" + username + "]登录认证通过(这里可以进行一些认证通过后的一些系统参数初始化操作)");
String ip = IpUtil.getIpAddr(request);
logService.insertLoginLog(username, ip, request.getContextPath());
Map<String, Object> success = new HashMap<String, Object>();
success.put("code", 1);
success.put("msg", "操作成功");
success.put("result", validAdmin);
return success;
}else{
token.clear();
Map<String, Object> failmap= new HashMap<String, Object>();
failmap.put("code", 0);
failmap.put("msg", "账号名称不正确");
failmap.put("result", null);
return failmap ;
}
}
}
手机端定义登录
public interface BusinessInterface {
//域名地址
public static String base_request_url = isDeBug ? "http://jiki.51vip.biz/cqkjg" : "http://127.0.0.1:5506/cqkjg";
/* public static String base_request_url_iot = "http://127.0.0.1:8000";
public static String base_mqtt_sever_url_iot = "tcp://127.0.0.1";*/
// public static final String base_request_url = "http://127.0.0.1:8000/";
public static final String base_request_url_iot = "http://127.0.0.1:8000";
//验证码
//public static final String moblieValidateCode_url = base_request_url + "/app/museum/accounts/moblieValidateCode?mobile=%1$s";
//注册
// public static final String register_url = base_request_url + "http://183.230.182.6:5506/cqkjg";
public static final String register_url_iot = base_request_url_iot + "/register/api";
//登录
// public static final String login_url = base_request_url + "/app/museum/accounts/login?loginName=%1$s&pwd=%2$s";
public static final String login_url_iot = base_request_url_iot + "/login/api?account=%1$s&password=%2$s";
public static final String login_url_iot_admin = base_request_url_iot + "/login/api6?username=%1$s&password=%2$s";
//第三方平台登陆
// public static final String third_platform_login_url = base_request_url + "/web/third/user/login/%1$s?openId=%2$s";
//第三方平台注册
// public static final String third_platform_register_url = base_request_url + "/web/third/user/register/%1$s";
//密码修改
public static final String changePwd_url = base_request_url + "/%1$s/changePwd/api/";
/* //忘记密码
public static final String moblieForgetCode_url = base_request_url + "/app/museum/accounts/mob lieForgetCode?loginName=%1$s";
public static final String forgetPwd_url = base_request_url + "/app/museum/accounts/forgetPwd";
public static final String getDeviceList = base_request_url_iot + "/app/device/mylist";
public static final String bindDevice = base_request_url_iot + "/app/device/bindDevice";
public static final String unbindDevice = base_request_url_iot + "/app/device/UnbindDevice";
public static final String getAlarmList = base_request_url_iot + "/app/device/alarmHistory";
public static final String banner_url = "http://183.230.182.6:5506/cqkjg" + "/app/recommend/home/top";
public static final String wei_regist_url = "http://120.24.159.93:8674/api/FansUserinfo";*/
}
登录判断代码 web Api 必现有post和get方法
private void login(final String name, String pwd) {
String url1 = String.format(Constants.BusinessInterface.login_url_iot, name, pwd);
String url = String.format(Constants.BusinessInterface.login_url_iot_admin, name, pwd);
Log.d("test","url:"+url);
OkHttpUtils.get().
url(url).
build().
execute(new Callback() {
@Override
public Object parseNetworkResponse(Response response, int id) throws Exception {
Headers headers=response.headers();
List<String> cookies=headers.values("Set-Cookie");
String res= response.body().string();
Log.d("test","cookies:"+cookies);
Log.d("test","result:"+res);
if(cookies.size()>0) {
String session = cookies.get(0);
String result = session.substring(0, session.indexOf(";"));
result=result.replace("WEBID=","");
ApplicationUtils.saveCookies(LoginActivity.this,result);
Log.d("test","cookie:"+result);
}
try {
if (!TextUtils.isEmpty(res)) {
JSONObject jsonObject = JSONObject.parseObject(res);
int code = jsonObject.getInteger("code");
String msg = jsonObject.getString("msg");
if (code == 1) {
JSONObject result = jsonObject.getJSONObject("result");
String uid = result.getString("uid");
String nickname=result.getString("nickname");
ApplicationUtils.saveUserID(LoginActivity.this,uid);
ApplicationUtils.saveNickname(LoginActivity.this,nickname);
Log.d("test==========================",res);
startActivity(new Intent().setClass(LoginActivity.this, MainActivity.class));
finish();
} else {
Log.d("test", "res:================================" + res);
Looper.prepare();
ApplicationUtils.showToastShort(LoginActivity.this, msg);
Looper.loop();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public void onError(Call call, Exception e, int id) {
ApplicationUtils.showToastShort(LoginActivity.this,e.toString());
}
@Override
public void onResponse(Object response, int id) {
}
});
}
2.android 对 json获取与解释 依靠的是第三方的lib库(okhttputils) 可以去下载
根据json结构可以用Gson工具生成一个bean类 来保存json解析数据
public class CasicculListDispayData {
/**
* category : {"catOrder":"0","categoryName":"航天核心理念","categoryParentUid":"72be66cc092240d5a60c2504c02c07d4","categorySource":"/articlenav","uid":"27f8a5dbc5c54e75ab47e744dc507039"}
* content : {"contentCategoryId":"27f8a5dbc5c54e75ab47e744dc507039","contentName":" 航天核心理念 ","contentType":"doc","contentUrl":"","contentValue":" \"14117448dc2c46cbb4a54da486798bc9.jpg\"/ \"4e6254ec5ac04b528288161c2bb62457.jpg\"/ \"7f1bdaa24d934ca3a76b717726f470f3.jpg\"/ \"09834e0360ee459b9c158ce9707a73e6.jpg\"/ \"b0a6215284044b75b2e24d3f45870182.jpg\"/ \"84697187656f414db6c31c7bd5a86699.jpg\"/ \"9a999b63ac7e4faa8bc4bd091fc64223.jpg\"/ \"c34ea3bfb1b74aa1911608248390230f.jpg\"/ \"7c5328f2e02d481c95def029f330fa07.jpg\"/ ","uid":"f2161cd16ca6442fb873995cd87374e6"}
*/
private CategoryBean category;
private ContentBean content;
public CategoryBean getCategory() {
return category;
}
public void setCategory(CategoryBean category) {
this.category = category;
}
public ContentBean getContent() {
return content;
}
public void setContent(ContentBean content) {
this.content = content;
}
public static class CategoryBean {
/**
* catOrder : 0
* categoryName : 理念
* categoryParentUid : 72be66cc092240d5a60c2504c02c07d4
* categorySource : /artnav
* uid : 27f8a5dbc5c54e75ab47e744dc507039
*/
private int catOrder;
private String categoryName;
private String categoryParentUid;
private String categorySource;
private String uid;
public int getCatOrder() {
return catOrder;
}
public void setCatOrder(int catOrder) {
this.catOrder = catOrder;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public String getCategoryParentUid() {
return categoryParentUid;
}
public void setCategoryParentUid(String categoryParentUid) {
this.categoryParentUid = categoryParentUid;
}
public String getCategorySource() {
return categorySource;
}
public void setCategorySource(String categorySource) {
this.categorySource = categorySource;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
}
public static class ContentBean {
/**
* contentCategoryId : 27f8a5dbc5c54e75ab47e744dc507039
* contentName : 理念
* contentType : doc
* contentUrl :
* contentValue : "14117448dc2c46cbb4a54da486798bc9.jpg"/ "4e6254ec5ac04b528288161c2bb62457.jpg"/ "7f1bdaa24d934ca3a76b717726f470f3.jpg"/ "09834e0360ee459b9c158ce9707a73e6.jpg"/ "b0a6215284044b75b2e24d3f45870182.jpg"/ "84697187656f414db6c31c7bd5a86699.jpg"/ "9a999b63ac7e4faa8bc4bd091fc64223.jpg"/ "c34ea3bfb1b74aa1911608248390230f.jpg"/ "7c5328f2e02d481c95def029f330fa07.jpg"/
* uid : f2161cd16ca6442fb873995cd87374e6
*/
private String contentCategoryId;
private String contentName;
private String contentType;
private String contentUrl;
private String contentValue;
private String uid;
public String getContentCategoryId() {
return contentCategoryId;
}
public void setContentCategoryId(String contentCategoryId) {
this.contentCategoryId = contentCategoryId;
}
public String getContentName() {
return contentName;
}
public void setContentName(String contentName) {
this.contentName = contentName;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getContentUrl() {
return contentUrl;
}
public void setContentUrl(String contentUrl) {
this.contentUrl = contentUrl;
}
public String getContentValue() {
return contentValue;
}
public void setContentValue(String contentValue) {
this.contentValue = contentValue;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
}
}
对Json的获取:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.casic.hp.party.R;
import com.casic.hp.party.casiccul.DataBean.CasicculListDispayData;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import okhttp3.Call;
import okhttp3.Request;
//方法一
///
private void getDataFromNet() {
url = "http://10.20.153.69:8000/articlenav/api/27f8a5dbc5c54e75ab47e744dc507039";
OkHttpUtils
.get()
.url(url)
.id(100)
.build()
.execute(new MyStringCallback());
//得到缓存的数据
String saveJson = CacheUtils.getString(this,url);
if(!TextUtils.isEmpty(saveJson)){
processData(saveJson);
}
}
public class MyStringCallback extends StringCallback {
@Override
public void onBefore(Request request, int id) {
setTitle("loading...");
}
@Override
public void onAfter(int id) {
setTitle("Sample-okHttp");
}
@Override
public void onError(Call call, Exception e, int id) {
e.printStackTrace();
tv_nodata.setVisibility(View.VISIBLE);
}
@Override
public void onResponse(String response, int id) {
Log.e(TAG, "onResponse:complete");
tv_nodata.setVisibility(View.VISIBLE);
switch (id) {
case 100:
Toast.makeText(CasicculListDispayActivity.this, "http", Toast.LENGTH_SHORT).show();
break;
case 101:
Toast.makeText(CasicculListDispayActivity.this, "https", Toast.LENGTH_SHORT).show();
break;
}
//解析数据和显示数据
if(response != null){
//缓存数据
CacheUtils.putString(CasicculListDispayActivity.this,url,response);
processData(response);
}
}
@Override
public void inProgress(float progress, long total, int id) {
Log.e(TAG, "inProgress:" + progress);
}
}
/**
* 解析和显示数据
* @param json
*/
private void processData(String json) {
//解析数据
CasicculListDispayData.ContentBean datas= parsedJson(json);
/// CasicculListDispayData.ContentBean datas = dataBean.getContent();
datas.getContentName();
datas.getContentValue();
if(datas != null && datas.getContentCategoryId()!=null){
//有数据
//tv_nodata.setVisibility(View.VISIBLE);
tv_name.setText(datas.getContentValue());
Log.e(TAG, "datas.getContentValue():" + datas.getContentValue());
System.out.println(" datas.getContentName()========:"+ datas.getContentName());
System.out.println("datas.getContentValue()========:"+datas.getContentValue());
//显示适配器
//CasicculListDispayAdapter adapter = new CasicculListDispayAdapter(CasicculListDispayActivity.this, datas);
// listView.setAdapter(adapter);
}else{
//没有数据
tv_nodata.setVisibility(View.VISIBLE);
}
progressBar.setVisibility(View.GONE);
}
//方法二
/**
* 使用okhttp-utils的get请求网络文本数据
*/
public void getDataGetByOkhttpUtils() {
String url = "http://www.zhiyun-tech.com/App/Rider-M/changelog-zh.txt";
// url="http://www.391k.com/api/xapi.ashx/info.json?key=bd_hyrzjjfb4modhj&size=10&page=1";
url = "http://10.20.153.69:8000/articlenav/api/27f8a5dbc5c54e75ab47e744dc507039";
System.out.println("datas.getContentValue()========:"+url);
OkHttpUtils
.get()
.url(url)
.id(100)
.build()
.execute(new MyStringCallback2());
}
/**
* 使用okhttp-utils的post请求网络文本数据
*/
public void getDataPostByOkhttpUtils() {
String url = "http://www.zhiyun-tech.com/App/Rider-M/changelog-zh.txt";
// url="http://www.391k.com/api/xapi.ashx/info.json?key=bd_hyrzjjfb4modhj&size=10&page=1";
url = "http://10.20.153.69:8000/articlenav/api/27f8a5dbc5c54e75ab47e744dc507039";
OkHttpUtils
.post()
.url(url)
.id(100)
.build()
.execute(new MyStringCallback2());
}
public class MyStringCallback2 extends StringCallback {
@Override
public void onBefore(Request request, int id) {
setTitle("loading...");
System.out.println("loading========:");
}
@Override
public void onAfter(int id) {
setTitle("Sample-okHttp");
System.out.println("okHttp========:");
}
@Override
public void onError(Call call, Exception e, int id) {
e.printStackTrace();
tv_name.setText("onError:" + e.getMessage());
System.out.println("onError========:"+ e.getMessage());
}
@Override
public void onResponse(String response, int id) {
Log.e(TAG, "onResponse:complete");
System.out.println("onResponse========:"+ response);
//tv_name.setText("onResponse:" + response);
switch (id) {
case 100:
Toast.makeText(CasicculListDispayActivity.this, "http", Toast.LENGTH_SHORT).show();
break;
case 101:
Toast.makeText(CasicculListDispayActivity.this, "https", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void inProgress(float progress, long total, int id) {
Log.e(TAG, "inProgress:" + progress);
// progressBar.setProgress((int) (100 * progress));
}
}
/**
* 解析json数据
*
* @param response
* @return
*/
private CasicculListDispayData.ContentBean parsedJson(String response) {
CasicculListDispayData.ContentBean dataBean2 =new CasicculListDispayData.ContentBean();
try {
JSONObject jsonObject ;
jsonObject = JSONObject.parseObject(response);
JSONObject currentOne = JSONObject.parseObject(jsonObject.getString("content"));
Log.d("test","currentOne="+currentOne.toJSONString());
dataBean2.setContentName(currentOne.getString("contentName"));
System.out.println("contentName========:"+currentOne.getString("contentName"));
dataBean2.setContentValue(currentOne.getString("contentValue"));
dataBean2.setContentCategoryId(currentOne.getString("contentCategoryId"));
System.out.println("contentCategoryId========:"+currentOne.getString("contentCategoryId"));
dataBean2.setUid(currentOne.getString("uid"));
System.out.println("uid========:"+currentOne.getString("uid"));
} catch (Exception e) {
e.printStackTrace();
}
return dataBean2;
}