@XQF
2016-08-04T09:56:04.000000Z
字数 2687
阅读 1096
匿名与其他的通信类基本傻瓜没有上什么太大的差异,写完了这个类就等着其他类来使用这个进行通信就可以了
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 stubnew NetCollection(Config.SERVEL_URL,HttpMethod.POST,new NetCollection.SuccessCallback() {@Overridepublic void onSuccess(String result) {// TODO Auto-generated method stubtry {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 blocke.printStackTrace();if (failCallback != null) {failCallback.onFail(Config.RESULT_STATUS_FAIL);}}}}, new NetCollection.FailCallback() {@Overridepublic void onFail() {// TODO Auto-generated method stubif (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 stubthis.content = content;this.phone_md5 = phone_md5;}}