post请求参数Json字符串包含数组的校验和处理
传入参数类型 {
"aaa":"aaaa",
"bbb":"bbb",
"ccc":"ccc",
"waterMark":[{'name':'默认name1','position':'默认地址1'},{'name':'默认name2','position':'默认地址2'}]
}
遍历 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxx.live.core.util.others.ConfigUtil;
import com.xxxx.live.webapp.util.HttpClientUtil;
import com.xxxx.mobilevideo.core.util.StringUtil; /**
* Servlet implementation class CloudCutStreamServlet
*/
public class CloudCutStreamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger log = Logger.getLogger(RecordFinishServlet.class); /**
* @see HttpServlet#HttpServlet()
*/
public CloudCutStreamServlet() {
super();
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(req, resp);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { //1.校验参数
JSONObject resultMap = this.getResutltMap(req);
if (null == resultMap) {
response(resp, getMsg(false, "请求参数格式不正确", "10002"));
return;
}
String liveName = resultMap.getString("liveName");
String masterUrl = resultMap.getString("masterUrl");
String slaveUrl = resultMap.getString("slaveUrl"); // 可以为空
String reason=resultMap.getString("reason"); // 切流原因不可以为空
JSONArray waterMark=resultMap.getJSONArray("waterMark"); //接收对象里的数组
//判断水印是否为空,为空则使用默认水印,
if(waterMark.isEmpty()){
//使用默认的水印
String waterMarkDefaultValue="[{'name':'默认name1','position':'默认地址1'},{'name':'默认name2','position':'默认地址2'}]";
resultMap.put("waterMark", waterMarkDefaultValue);
}else{
//水印不为空判断数组中的json的key值是否为空
int jsonSize = waterMark.size(); //获取数组长度 for(int i=0;i<jsonSize;i++){
JSONObject jsonTemp = (JSONObject)waterMark.getJSONObject(i); if(StringUtil.isNullStr(jsonTemp.getString("name"))||StringUtil.isNullStr(jsonTemp.getString("position"))){
response(resp, getMsg(false, "参数为空", "10001"));
return;
}
}
}
// 接受参数校验
if (StringUtil.isNullStr(liveName) || StringUtil.isNullStr(masterUrl)||StringUtil.isNullStr(reason)) {
response(resp, getMsg(false, "参数为空", "10001"));
return;
}
//参数正常
try {
String result ="";
String change_source_url = ConfigUtil.getProperty("change_source_Url");
response(resp, getMsg(true, "请求成功", "99999"));
} catch (Exception e) {
e.printStackTrace();
}
} public JSONObject getResutltMap(HttpServletRequest req) {
String requestStr = "";
StringBuilder sb = new StringBuilder();
InputStream is = null;
BufferedReader dis = null;
try {
is = req.getInputStream();
dis = new BufferedReader(new InputStreamReader(is, "utf-8"));
String str = "";
while ((str = dis.readLine()) != null) {
sb.append(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dis != null) {
dis.close();
}
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
requestStr = sb.toString();
try {
JSONObject json = JSON.parseObject(requestStr);
return json;
} catch (Exception e) {
}
return null;
} private String getMsg(boolean success, String msg, String errCode) {
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put("success", success);
returnMap.put("msg", msg);
returnMap.put("errCode", errCode);
String returnJson = JSON.toJSONString(returnMap);
return returnJson;
}
private void response(HttpServletResponse resp, String msg) {
try {
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
out.println(msg);
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
post请求参数Json字符串包含数组的校验和处理的更多相关文章
- post请求参数Json字符串包含数组的校验和处理 -工作随记-备查工具
package com.xxxx.live.webapp.selvert; import java.io.BufferedReader; import java.io.IOException; imp ...
- json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...
- wemall app商城源码中基于JAVA通过Http请求获取json字符串的代码
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.分享其中关于通过Http请求获取json字符串的代码供 ...
- 在OnActionExecuted 获取请求参数的值(包含类类型)
1.在OnActionExecuting里 获取请求参数的值 比较简单 /// <summary> /// 获取首参数的值 /// </summary> /// <par ...
- android http post 请求与 json字符串
一.目标 android客户端发送一个json格式的http的请求,期望得到服务端的一个json反馈. 1. 客户端发送的json格式为: {"data" : "valu ...
- AFNetworking 3.0 解决加密后请求参数是字符串问题
把整个请求参数的json加密生成一个字符串传给服务器,错误提示:[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top ...
- ajax post 请求发送 json 字符串
$.ajax({ // 请求方式 type:"post", // contentType contentType:"application/json", // ...
- php json字符串转为数组或对象
从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach 遍历即可 $array = get_object_vars($test); $json= '[{&q ...
- PHP实现url参数组合字符串与数组相互转换
$data = array( 'name' => 'tom', 'sex' => 1, 'channel' => 'ty' ); 数组转url参数字符串 $queryStr = ht ...
随机推荐
- React 组件 API
React 组件 API 在本章节中我们将讨论 React 组件 API.我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性 ...
- 在 Azure 中的 Windows 虚拟机上使用 SSL 证书保护 IIS Web 服务器
若要保护 Web 服务器,可以使用安全套接字层 (SSL) 证书来加密 Web 流量. 这些 SSL 证书可存储在 Azure Key Vault 中,并可安全部署到 Azure 中的 Windows ...
- MySQL5.6锁阻塞分析
日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻塞的. blog地址:http://blog.csdn.net/hw_libo/article/detail ...
- 写Ansible playbook添加zabbix被监控的对象
本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...
- MySQL基础值 存储过程和函数
一.创建存储过程和函数 什么是创建存储过程和函数? 就是将经常使用的一组SQL语句组合在一起,并将这些SQL语句当做一个整体存储在MYSQL服务器中. 创建存储过程的语句是:CREATE PROCE ...
- 笔记本键盘开关方法 仅限window系统
按win键,搜索CMD(命令提示符).右键-以管理员身份运行.关闭笔记本键盘输入:sc config i8042prt start= disabled回车-重启电脑即可.需要重新启用键盘的话,输入:s ...
- Win10无法启动软件提示MSVCP110.dll丢失
遇到这种问题,第一种方法可以选择去https://www.microsoft.com/zh-CN/download/details.aspx?id=30679 官网去下载 vc++ 2012 安装和自 ...
- python第三十一课--递归(1.简单递归函数的定义和使用)
演示:简单递归函数的定义和使用 需求:1~5进行累加 找寻关系:函数名:mySum(num) 1).找临界点:运算到1(加到1)就结束了 2). 第一次:5+mySum(5-1)-->retur ...
- Universal-Image-Loader源码分析(一)——ImageLoaderConfiguration分析
UIl与Volley一样是非常古老的框架,UIL实现了从网络获取图片,对图片进行缓存,以及根据个性化的设置来将图片加载到ImageView上. 这篇文章 主要分析UIl在初始化配置的源码 UIL初始化 ...
- php可逆加密解密函数
很多PHP程序员调试使用echo.print_r().var_dump().printf()等,虽然对于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的 ...