@XQF
2016-08-04T17:56:04.000000Z
字数 2687
阅读 962
匿名
与其他的通信类基本傻瓜没有上什么太大的差异,写完了这个类就等着其他类来使用这个进行通信就可以了
package com.example.secret1.net;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.secret1.Config;
public class GetComment {
public GetComment(String phone_md5, String token, String msgId, int page,
int perpage, final SuccessCallback successCallback,
final FailCallback failCallback) {
// TODO Auto-generated constructor stub
new NetCollection(
Config.SERVEL_URL,
HttpMethod.POST,
new NetCollection.SuccessCallback() {
@Override
public void onSuccess(String result) {
// TODO Auto-generated method stub
try {
JSONObject jsonObject = new JSONObject(result);
switch (jsonObject.getInt(Config.KEY_STATUS)) {
case Config.RESULT_STATUS_SUCCESS:
if (successCallback != null) {//每一次请求就是一个JSONArray的数组,对这个数组进行单独的处理
List<Comment> listComments = new ArrayList<Comment>();
int page = jsonObject
.getInt(Config.KEY_PAGE);
int perpage = jsonObject
.getInt(Config.KEY_PERPAGE);
String msgId = jsonObject
.getString(Config.KEY_MESSAGE_ID);
JSONArray jsonArray = jsonObject
.getJSONArray(Config.KEY_TIMELINE);
for (int i = 0; i < jsonArray.length(); i++) {
String content = jsonArray
.getJSONObject(i).getString(
Config.KEY_CONTENT);
String phone_md5 = jsonArray
.getJSONObject(i).getString(
Config.KEY_PHONE_MD5);
listComments.add(new Comment(content,
phone_md5));
}
successCallback.onSuccess(msgId, page,
perpage, listComments);
}
break;
case Config.RESULT_STATUS_INVILD_TOKEN:// 在这里有疑惑,为什么失效也是会有失败的结果呢,失败的信号是谁放出的?
// 注意到我们在NetCollection类的异步任务结束时就进行了result值得判断,因此信号是从NetCollection中放出的,我们的
// status是invild,肯定是status的2,服务器在status为2的情况后面根本就没有放数据,因此我们客户端接收到服务器的返回数据
// 为空,为空就放出失败信号,因此失败信号的放出就包括两种情况,一种是失败,一种是token过期
if (failCallback != null) {
failCallback
.onFail(Config.RESULT_STATUS_INVILD_TOKEN);
}
break;
default:
break;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (failCallback != null) {
failCallback.onFail(Config.RESULT_STATUS_FAIL);
}
}
}
}, new NetCollection.FailCallback() {
@Override
public void onFail() {
// TODO Auto-generated method stub
if (failCallback != null) {
failCallback.onFail(Config.RESULT_STATUS_FAIL);
}
}
}, Config.KEY_ACTION, Config.ACTION_GET_COMMENT,
Config.KEY_PHONE_MD5, phone_md5, Config.KEY_TOKEN, token,
Config.KEY_PAGE, page + "", Config.KEY_PERPAGE, perpage + "",
Config.KEY_MESSAGE_ID, msgId);
}
public static interface SuccessCallback {
void onSuccess(String msgId, int page, int perpage,
List<Comment> comments);
}
public static interface FailCallback {
void onFail(int ErrorCode);// 因为文档中给出了有token过期的情况,因此我们要传一个状态出去判断一下,和前面的获取消息是一样的
}
}
package com.example.secret1.net;
public class Comment {
private String content, phone_md5;
public Comment(String content, String phone_md5) {
// TODO Auto-generated constructor stub
this.content = content;
this.phone_md5 = phone_md5;
}
}