1、Request(该类型是webmagic框架定义的)经过redis消息传送后,其中的post参数(原本是NameValuePair[]类型数据)会转变为JSONArray类型数据,导致之后httpclient获取post参数数据进行NameValuePair[]强转操作报错。
下边是request的结构,set和get方法省略
public class Request {
private String url;
private String method;
/**
* Store additional information in extras.
*/
private Map<String, Object> extras;
/**
* Priority of the request.<br>
* The bigger will be processed earlier. <br>
* @see us.codecraft.webmagic.scheduler.PriorityScheduler
*/
private long priority;
}
NameValuePair[]存储在map中。
原因:后来查看redis的push方法,发现同事对它进行了封装,使用fastjson将request序列化为一个字符串,然后存储在redis中,而由于map的value是object类型即泛型,fastjson对泛型的处理是
Object对象类型-->JSONObject
Object[]数组类型-->JSONArray
还有就是基本数据类型、String、BigDecimal等等
所以产生了如上的错误。