您的位置:首页 > 移动开发

【安卓学习之代码学习】 我的app通信过程(笔记)

2017-08-12 10:06 501 查看
一目录结构

二数据格式

三应用层调用

四待更新

经过会忘记通信的整个过程机制,所以将这个过程的代码记录下,方便查看,理解

█ 一、目录结构

后面再添加

█ 二、数据格式

 ● 通信使用第三方库com.squareup.okhttp,数据请求的格式为Map

/*
* post
*
* return code -1(网络异常,服务器无法连接) 0(服务端正常响应)
*/
public int post(String url,Map<String,Object> params,ResourceCallBack callBack) {
RequestBody body = new FormEncodingBuilder().add("requestJson", FastJsonUtil.toJson(params)).build();
Request.Builder builder = new Request.Builder().url(url).post(body)
.addHeader("Accept", "application/json")
.addHeader("Connection", "keep-alive");
builder.addHeader("Cookie", getSessionId());
Request request = builder.build();
try {
Response response = resource.newCall(request).execute();
storeSessionId(response);
if(response.isSuccessful()
&& callBack != null){
callBack.callBack(response.body().string());
}
return 0;
} catch (IOException e) {
return -1;
}
}


 ● 接收数据分享

   ○ 服务端返回的数据为JSON格式,如下:

{
"statusCode":"200",
"message":"",
"value":{
"paraList":[  {
"ID":"1",
"Value":"北京"
},
{
"ID":"2",
"Value":"多云"
}
]
}
}


   ○ 格式说明:

{
"statusCode":"提示信息",
"message":"请求失败的具体原因",
"value":"返回值"
}


返回状态:statusCode //200请求成功 300请求出错 400会话过期

提示信息:message // statusCode不等于200时,才有值

返回值:value // 任意值,标准【JSON】格式,用阿里巴巴的fastjson解析

   ○ 返回的数据封装成对应的类:

public class CommonResult {
private String statusCode;
private String message;
private String value;
...
}


█ 三、应用层调用

想要获取部分数据,先通过服务端提供的api接口来获取数据:

 ● 

DirectionRequest.getTerminalPara(mContext, new DirectionCallBack() {

@Override
public void callBack(CommonResult result) {
if (result == null) {
Toast.makeText(this, "网络请求失败", 2000).show();
return false;
}
String value = result.getValue();
if (TextUtils.isEmpty(value)) {
Toast.makeText(this, "网络请求失败", 2000).show();
return false;
}
getApiDataDeal(value);
return true;
}
});


 ● 

protected boolean getApiDataDeal(String value) {
ApiDataResult data = com.alibaba.fastjson.JSON.parseObject(value, ApiDataResult.class);
ArrayList<HashMap<String, String>> paraList = data
.getSmartswitchParaList();
HYStringUtils.printHashMapList(paraList);
Log.e(" parseResult44", "=======");
for (int i = 0; i < paraList.size(); i++) {
HashMap<String, String> hashMap = paraList.get(i);
String paraID = hashMap.get("paraID");
String paraValue = hashMap.get("paraValue");
for (int j = 0; j < 8; j++) {
if (paraID.equals(formItemList[j].getParaID())) {
......
break;
}
}
}
}


 ● 服务端返回的数据为JSON格式,如下:

{
"statusCode":"200",
"message":"",
"value":{
"paraList":[  {
"ID":"1",
"Value":"北京"
},
{
"ID":"2",
"Value":"多云"
}
]
}
}


 ● 格式说明:

{
"statusCode":"提示信息",
"message":"请求失败的具体原因",
"value":"返回值"
}


返回状态:statusCode //200请求成功 300请求出错 400会话过期

提示信息:message // statusCode不等于200时,才有值

返回值:value // 任意值,标准【JSON】格式,用阿里巴巴的fastjson解析

 ● 另外将返回的数据封装成对应的类:

public class CommonResult {
private String statusCode;
private String message;
private String value;
...
}


█ 四、待更新

转载请注明出处:【安卓学习之代码学习】 我的app通信过程(笔记)】

http://blog.csdn.net/ljb568838953/article/details/77109493
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: