Android中post请求传递json数据给服务端的实例
作者:Lucky_bo 发布时间:2022-04-21 01:51:18
标签:Android,post,请求,传递,json,服务端
在最近的项目中有个需求是这样的:
入参封装成JSON,EXAMPLE:
{ "uuid": "iamauuid",
"clientType": "AND",
"content": "{\"gender\":\"F\",\"name\":\"TTT\"}"}
其中content中是json的object,且要求把content * 殊的字符进行转义。
主要代码如下:
/**
* post请求用json的格式传递数据给服务器
*
* @param callback
*/
public static <T> void postShareContent(Context context, T saveObject, final ShareSaveDataCallback callback) {
final String uuid = StringUtils.generateUUID().replaceAll("-", "");
//利用Gson来处json数据和类模型之间的转化
Gson gson = new Gson();
//把类模型对象转化成json的数据模式
String contentJson = gson.toJson(saveObject);
//用ShareEntity把内容给封装起来,再处理成json的格式
ShareEntity shareEntity = new ShareEntity();
//uuid本地端生成,有特殊的方法,下面会注解
shareEntity.uuid = uuid;
shareEntity.clientType = "AND";
shareEntity.content = contentJson;
//再用gson.toJson()处理会自动把第二层的object对象的特殊字符转义掉
String shareJson = gson.toJson(shareEntity);
StringEntity entity = null;
try {
//把要传给后端的json数据,用StringEntity给封装起来
entity = new StringEntity(shareJson,"UTF-8");
//注明:UTF-8是防止传给后端时中文出现乱码
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpApiClient.postJsonByAccessToken(context, ApiBaseUrl.getShareUrl(), entity, true, new ApiResponseHandler() {
@Override
public void onResponse(boolean success, JsonObject jsonObject, ErrorCode errCode) {
super.onResponse(success, jsonObject, errCode);
callback.onSaveResult(success, uuid, errCode);
}
});
}
postJsonByAccessToken的方法:
private static AsyncHttpClient mHttpClient = new AsyncHttpClient();
public static void postJsonByAccessToken(Context context, String url, StringEntity entity, boolean isCompleterUrl, AsyncHttpResponseHandler handler) {
synchronized (mHttpClient) {
addHeader(HEADER_TOKEN, token);
if (!isCompleterUrl) {
url = getCompleteUrl(url);
}
mHttpClient.post(context, url, entity, ApiParam.CONTENT_TYPE_JSON, handler);
}
}
contentType的类型为:application/json
/**
public interface ApiParam {
/**
* json格式
*/
String CONTENT_TYPE_JSON = "application/json";
}
其中生产本地的uuid方法如下:相当于会自动生产一组随机数
public static String generateUUID() {
return UUID.randomUUID().toString();
}
数据代码的一部分:
{"clientType":"AND",
"uuid":"e3ab0260286d442da86da7fac21e1cc7"
"content":"{\"matchEventStats\":{\"extraTime\":0,\"timeLineModels\":[{\"downPlayerId\":0,\"id\":2188,\"playerHeadUrl\":\"http://7xj3pr.com1.z0.glb.clouddn.com/registration/user/head/image/rdGsidKZHjPzun6TMrTDyMz7IngTONlQ\",\"playerId\":1147,\"playerName\":\"张宇斌\",\"schoolId\":6,\"timeLineEventType\":\"GOAL\",\"timeMin\":0,\"timeSec\":0,\"upPlayerId\":0},{\"downPlayerHeadUrl\":\"http://7xj3pr.com1.z0.glb.clouddn.com/default/head/useravatar.png\",\"downPlayerId\":1682,\"downPlayerName\":\"林修乾\",\"id\":1209,\"playerId\":0,\"schoolId\":116,\"timeLineEventType\":\"SU\",\"timeMin\":4,\"timeSec\":3,\"upPlayerHeadUrl\":......}
由于数据量比较大,固就显示一部分的数据来说明问题。
基本就是这样,快去解决你们的问题吧!
来源:http://blog.csdn.net/lucky_bo/article/details/52885346


猜你喜欢
- 本文介绍一些Java初学者常问的问题,可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需
- 什么是不可变对象?String对象是不可变的,但这仅意味着你无法通过调用它的公有方法来改变它的值。众所周知, 在Java中, String类
- 前言dataGridView是常用的表格控件,实现分页的方式也有很多种,例如直接使用sql语言,配合存储方式,直接读取某一页的内容,大家如果
- 什么是方法?System.out.println(),那么它是什么呢?系统类里的,对象out,输出方法printlnJava方法是语句的集合
- 本文实例讲述了C#使用NPOI导入Excel的方法。分享给大家供大家参考,具体如下:NPOI是由国人开发的一个进行excel操作的第三方库。
- 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10
- 随着互联网技术的发展,传统的应用架构已满足不了实际需求,微服务架构就随之产生。那么传统应用架构到底出了什么问题呢?又如何解决?接下来我们将从
- 昨天,我同学用Eclipse安装Aptana插件,她弄了一天都没安装起,最后找了我。 然后我也按照她的那个方法安装,结果一样,安装不成功!网
- 应用场景有些时候项目中会用到很多路径,并且很可能多个路径在同一个根目录下,那为了方便配置的修改,达到只修改根目录即可达到一改全改的效果,此时
- 一、基于WINFORM下的选择对话框在WINFORM下,我们可以利用系统的对话框(MessageBox)来实现,具体思路是读取Message
- Spring数据源的配置数据源(连接池)的作用数据源(连接池)是提高程序性能如出现的事先实例化数据源,初始化部分连接资源使用连接资源时从数据
- 在Android开发过程中,有时会需要一些消息提示,大多数情况可以用dialog来做,但有些消息不需要用户去点击取消并且不能对用户体验产生影
- 目录背景Shutdown Hook 介绍关闭钩子被调用场景注意事项实践Shutdown Hook 在 Spring 中的运用背景如果想在 J
- 当我们使用swagger,进行接口测试,怕接口不安全,担心暴露。可采用两种方式1.环境权限配置对swagger文档配置只在测试环境可访问,生
- 在开发中,用到springboot项目,当打包后部署运行时,出现了这个问题,网上搜了好多,又是加META-INF配置,又是加啥的,感觉spr
- 前言Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们。这一操作,我们称之为“批处理”,能得到越好的渲染性能。Unity
- 开窗函数能在每行的最后一行都显示聚合函数的结果,所以聚合函数可以用作开窗函数聚合函数和开窗函数聚合函数是将多行变成一行,如果要显示其他列,必
- 汇总:1. 冒泡排序每轮循环确定最值;public void bubbleSort(int[] nums){ in
- 前言C++类中有几个特殊的非静态成员函数,当用户未定义这些函数时,编译器将给出默认实现。C++11前有四个特殊函数,C++11引入移动语义特
- 本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下用法一 this代表当前实例,用this.显式调用一