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 ...
随机推荐
- SQLSERVER中的资源调控器
SQLSERVER中的资源调控器 转载自: http://wenku.baidu.com/view/0d92380cf78a6529647d5375.html http://www.cnblogs.c ...
- 【mongoDB运维篇③】replication set复制集
介绍 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性,总结下来有以下好处: 数据备份与恢复 读写分离 MongoDB 复制集的结构以及基本概念 正如上图所示,Mon ...
- 【转】Redis学习---NoSQL和SQL的区别及使用场景
什么是NoSQL NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,它具有非关系型.分布式.不提供ACID的数 ...
- [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)
[ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...
- SDN2017 第五次实验作业
实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析验证负载均衡 实验步骤 建立以下拓扑,并连接上ODL控制器. 利用ODL下发组表.流表,实现建议负载均衡 s1组 ...
- jQuery 动态加载下拉框选项(Django)
function change_style() { $.ajax({ url: "{% url 'change_style' %}", type: "GET", ...
- JVM系列三:JVM参数设置
JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...
- ssl,proxy;部分http部分https;80,443,8080;nginx+tomcat;
..... user nobody; worker_processes 8; error_log /opt/logs/nginx/nginx_error.log crit; pid /usr/loca ...
- NFS及RPC讲解
导读 NFS(Network File System)即网络文件系统,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网 ...
- JAVA 第三周学习总结
20175308 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 本周的学习内容为整个第四章的内容,学习中感觉知识点既多又杂,故在总结时尽量选用重要的或高度概 ...