package com.socks.jiandan.net;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.socks.jiandan.model.Comment4FreshNews;
import com.socks.jiandan.utils.logger.Logger;
import org.json.JSONObject;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
/**
* 发表评论
* Created by zhaokaiqiang on 15/4/14.
*/
public class Request4PushFreshComment extends Request<Boolean> {
private Response.Listener<Boolean> listener;
private HashMap<String, String> params;
public Request4PushFreshComment(String url, Response
.Listener<Boolean> listener, Response.ErrorListener errorListener) {
super(Method.GET, url, errorListener);
Logger.d(url);
this.listener = listener;
}
@Override
protected Response<Boolean> parseNetworkResponse(NetworkResponse response) {
try {
String resultStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
JSONObject resultObj = new JSONObject(resultStr);
String result = resultObj.optString("status");
String error=resultObj.optString("error");
if ( result.equals("ok")) {
return Response.success(true, HttpHeaderParser.parseCacheHeaders(response));
} else {
return Response.error(new VolleyError("错误原因:" + error));
}
} catch (Exception e) {
e.printStackTrace();
return Response.error(new VolleyError(e));
}
}
/**
* 包装请求参数
*
* @return
*/
public static String getRequestURL(String post_id, String parent_id,String parent_name,
String name,String email, String content) {
content= MessageFormat.format("@<a href=\"#comment-{0}\">{1}</a>: {2}",parent_id,parent_name, content);
return getRequestURLNoParent(post_id,name,email,content);
}
/**
* 包装无父评论的请求参数
*
* @return
*/
public static String getRequestURLNoParent(String post_id,String name, String email,String content) {
//方法1 转义
//content= MessageFormat.format("%40%3Ca+href%3D%27%23comment-{0}%27%3E{1}%3C%2Fa%3E%3A+{2}",parent_id,parent_name, content);
//方法2 URLEncoder(更优)
try {
name = URLEncoder.encode(name, "utf-8");
content=URLEncoder.encode(content, "utf-8");
}catch (Exception ex){
Logger.d("URLEncoder error");
}
return MessageFormat.format("{0}&post_id={1}&content={2}&email={3}&name={4}",
Comment4FreshNews.URL_PUSH_COMMENT, post_id, content, email, name);
}
@Override
protected void deliverResponse(Boolean response) {
listener.onResponse(response);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
}