[关闭]
@XQF 2016-08-04T17:56:04.000000Z 字数 2687 阅读 962

《匿名》第二十五课----获取消息评论通信类实现

匿名


与其他的通信类基本傻瓜没有上什么太大的差异,写完了这个类就等着其他类来使用这个进行通信就可以了

GetComment.java通信类

  1. package com.example.secret1.net;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.json.JSONArray;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7. import com.example.secret1.Config;
  8. public class GetComment {
  9. public GetComment(String phone_md5, String token, String msgId, int page,
  10. int perpage, final SuccessCallback successCallback,
  11. final FailCallback failCallback) {
  12. // TODO Auto-generated constructor stub
  13. new NetCollection(
  14. Config.SERVEL_URL,
  15. HttpMethod.POST,
  16. new NetCollection.SuccessCallback() {
  17. @Override
  18. public void onSuccess(String result) {
  19. // TODO Auto-generated method stub
  20. try {
  21. JSONObject jsonObject = new JSONObject(result);
  22. switch (jsonObject.getInt(Config.KEY_STATUS)) {
  23. case Config.RESULT_STATUS_SUCCESS:
  24. if (successCallback != null) {//每一次请求就是一个JSONArray的数组,对这个数组进行单独的处理
  25. List<Comment> listComments = new ArrayList<Comment>();
  26. int page = jsonObject
  27. .getInt(Config.KEY_PAGE);
  28. int perpage = jsonObject
  29. .getInt(Config.KEY_PERPAGE);
  30. String msgId = jsonObject
  31. .getString(Config.KEY_MESSAGE_ID);
  32. JSONArray jsonArray = jsonObject
  33. .getJSONArray(Config.KEY_TIMELINE);
  34. for (int i = 0; i < jsonArray.length(); i++) {
  35. String content = jsonArray
  36. .getJSONObject(i).getString(
  37. Config.KEY_CONTENT);
  38. String phone_md5 = jsonArray
  39. .getJSONObject(i).getString(
  40. Config.KEY_PHONE_MD5);
  41. listComments.add(new Comment(content,
  42. phone_md5));
  43. }
  44. successCallback.onSuccess(msgId, page,
  45. perpage, listComments);
  46. }
  47. break;
  48. case Config.RESULT_STATUS_INVILD_TOKEN:// 在这里有疑惑,为什么失效也是会有失败的结果呢,失败的信号是谁放出的?
  49. // 注意到我们在NetCollection类的异步任务结束时就进行了result值得判断,因此信号是从NetCollection中放出的,我们的
  50. // status是invild,肯定是status的2,服务器在status为2的情况后面根本就没有放数据,因此我们客户端接收到服务器的返回数据
  51. // 为空,为空就放出失败信号,因此失败信号的放出就包括两种情况,一种是失败,一种是token过期
  52. if (failCallback != null) {
  53. failCallback
  54. .onFail(Config.RESULT_STATUS_INVILD_TOKEN);
  55. }
  56. break;
  57. default:
  58. break;
  59. }
  60. } catch (JSONException e) {
  61. // TODO Auto-generated catch block
  62. e.printStackTrace();
  63. if (failCallback != null) {
  64. failCallback.onFail(Config.RESULT_STATUS_FAIL);
  65. }
  66. }
  67. }
  68. }, new NetCollection.FailCallback() {
  69. @Override
  70. public void onFail() {
  71. // TODO Auto-generated method stub
  72. if (failCallback != null) {
  73. failCallback.onFail(Config.RESULT_STATUS_FAIL);
  74. }
  75. }
  76. }, Config.KEY_ACTION, Config.ACTION_GET_COMMENT,
  77. Config.KEY_PHONE_MD5, phone_md5, Config.KEY_TOKEN, token,
  78. Config.KEY_PAGE, page + "", Config.KEY_PERPAGE, perpage + "",
  79. Config.KEY_MESSAGE_ID, msgId);
  80. }
  81. public static interface SuccessCallback {
  82. void onSuccess(String msgId, int page, int perpage,
  83. List<Comment> comments);
  84. }
  85. public static interface FailCallback {
  86. void onFail(int ErrorCode);// 因为文档中给出了有token过期的情况,因此我们要传一个状态出去判断一下,和前面的获取消息是一样的
  87. }
  88. }

Comment.java

  1. package com.example.secret1.net;
  2. public class Comment {
  3. private String content, phone_md5;
  4. public Comment(String content, String phone_md5) {
  5. // TODO Auto-generated constructor stub
  6. this.content = content;
  7. this.phone_md5 = phone_md5;
  8. }
  9. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注