我是一名程序员也是一名诗人,也爱唱歌弹琴去说爱,我还是某所大学里面隐藏的高手,小隐隐于野,大隐隐于市,我和大家开玩笑的,我其实是一名研究生哈哈。作为一名程序员我也有自己遇到的各种问题,引用我自己写的诗“人生自古求难全,更那堪,几度叹折衷。”,算了算了,走正题。
一、问题伊始
交待一下这票文章是干嘛的。这篇文章是我最近的一个项目的一个步骤,我拿来分享与大家。是关于前端与后端的数据传输问题。
二、问题适用范围
我做的是安卓端与服务端的数据交互,整体全部用java设计,安卓端是用okhttp-utils方式提交json数据,而后端是用Tomcat Servlet接收并处理json数据,在此交互中,我抽取部分代码作为自己的工具类,拿来与大家分享。json数据是用Gson去生成与解析,用别的也可以,但是建议保证两方数据的一致性
三、代码
安卓端访问请求:
String url = ADD_NEWS;
OkHttpUtils
.postString()
.url(url)
.mediaType(MediaType.parse("application/json; charset=utf-8"))
.content(new Gson().toJson(new News(null,title,content,new Date())))
.id(100)
.build()
.execute(new MyStringCallback());
}
大家看好,这里使用.postString()提交方式区别于以往的post提交,因为我需要提交的参数中带有中文字符,如果用平常的post,get请求只会在服务端数据库添加乱码。
服务端servlet中接收json数据请求
String sb = WebUtils.parseJson(req);
News news = gson.fromJson(sb.toString(), News.class);
抽取的小工具代码如下:
public static String parseJson(HttpServletRequest request){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
四、最后
最后,我发表一下言论,可能我们在平常遇见各种各样的问题,但是一定要心平气和的去解决这各种问题,当你解决出来问题后,也会有各种不一样的成就感。我的代码比较基础,大家基本上一看就懂,这其实是我的初衷,代码的简洁易懂是我们程序员一直追求的内容,但是有时候往往会顾此失彼,所以我们在增进自己的技术的同时,要给新人留下一些可以进步的空间,这样我们的世界就会越来越好,这难道不是你和我的愿望吧?