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字符串包含数组的校验和处理
传入参数类型 {"aaa":"aaaa","bbb":"bbb","ccc":"ccc&q ...
- 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 ...
随机推荐
- shell入门之变量测试
格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...
- Cytoscape源码下载地址和编译办法
开发环境:Windows2008 R2 64位+Jdk1.7+Maven3.2.3 前提条件:安装好JDK1.7到C:\Program Files\Java\jdk1.7.0_67,下载好Maven并 ...
- Arquillian Exception:java.lang.NoClassDefFoundError
Issue: When you deploy and run Arquillian testcase, you may encountered java.lang.NoClassDefFoundErr ...
- iOS开发之六:常用控件--UIImageView的使用
UIImageView是我们做iOS开发用的非常多的一个控件,IOS中的各种图片,包括头像,有的背景图片等基本都要用到这个控件. 1.常用的属性以及方法 <span style="fo ...
- android 解析服务器数据使用json还是xml方式
整理自百度搜索: 现在的Android应用程序,几乎没有不与服务端交换数据的了!那么,android应用在与服务端交换数据的时候,我们有哪些选择呢?哪种数据交换格式要更好吗?下面文章简单为 andro ...
- 【一天一道LeetCode】#90. Subsets II
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- android studio编译慢的问题
1.修改android studio的使用堆内存,根据自己电脑的内存,尽量设置的大一点,点击help->如下图: 2.接下来设置使用离线gradle构建,一开始就是使用了内置的默认路径gradl ...
- 小强的HTML5移动开发之路(18)——HTML5地理定位
来自:http://blog.csdn.net/dawanganban/article/details/18192091 在前面的<小强的HTML5移动开发之路(2)--HTML5的新特性> ...
- Android开发之初识MVP模式
各位亲爱的小伙伴,有没有想我啊,我胡汉wing又回来了. 很长一段时间没有更新博客..原因是..从离职回到学校以后,一直在享受最后的学生时光(打游戏).. 游戏固然很爽,但是觉得实在很荒废,于是半夜诈 ...
- DFS迷宫递归所有路径 新手入门
这篇文章写给自己以后复习和个个入门朋友:提示同学们一定耐心看完解释 哪怕看得很难受,我是新手我懂大家的心烦.看完后慢慢体会代码 我们假设迷宫为如下状况: {0,0,1,0} ...