package com.socks.jiandan.net;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import com.socks.jiandan.model.CommentNumber;
import org.json.JSONObject;
import java.util.ArrayList;
public class Request4CommentCounts extends Request<ArrayList<CommentNumber>> {
private Response.Listener<ArrayList<CommentNumber>> listener;
public Request4CommentCounts(String url, Response.Listener<ArrayList<CommentNumber>> listener,
Response.ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = listener;
}
@Override
protected Response<ArrayList<CommentNumber>> parseNetworkResponse(NetworkResponse response) {
try {
String jsonStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
JSONObject jsonObject = new JSONObject(jsonStr).getJSONObject("response");
String[] comment_IDs = getUrl().split("\\=")[1].split("\\,");
ArrayList<CommentNumber> commentNumbers = new ArrayList<>();
for (String comment_ID : comment_IDs) {
if (!jsonObject.isNull(comment_ID)) {
CommentNumber commentNumber = new CommentNumber();
commentNumber.setComments(jsonObject.getJSONObject(comment_ID).getInt(CommentNumber.COMMENTS));
commentNumber.setThread_id(jsonObject.getJSONObject(comment_ID).getString(CommentNumber.THREAD_ID));
commentNumber.setThread_key(jsonObject.getJSONObject(comment_ID).getString(CommentNumber.THREAD_KEY));
commentNumbers.add(commentNumber);
} else {
//可能会出现没有对应id的数据的情况,为了保证条数一致,添加默认数据
commentNumbers.add(new CommentNumber("0", "0", 0));
}
}
return Response.success(commentNumbers, HttpHeaderParser.parseCacheHeaders(response));
} catch (Exception e) {
e.printStackTrace();
return Response.error(new ParseError(e));
}
}
@Override
protected void deliverResponse(ArrayList<CommentNumber> response) {
listener.onResponse(response);
}
}