android json 解释 web api

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;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值