diff --git a/weixin4j-base/pom.xml b/weixin4j-base/pom.xml index c8fcfe04..8f73da1b 100644 --- a/weixin4j-base/pom.xml +++ b/weixin4j-base/pom.xml @@ -24,7 +24,7 @@ commons-httpclient commons-httpclient - 3.1 + 3.0 true diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java index af4d2f6b..4dc51c6c 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3.java @@ -43,8 +43,8 @@ import com.foxinmy.weixin4j.model.Consts; import com.foxinmy.weixin4j.util.StringUtil; /** - * Apache HttpComponent 3.x - * + * Requires commons-httpclient 3.0 or higher + * * @className HttpComponent3 * @author jinyu(foxinmy@gmail.com) * @date 2015年8月18日 @@ -116,8 +116,11 @@ public class HttpComponent3 extends AbstractHttpClient { httpClient.getHttpConnectionManager().getParams() .setSendBufferSize(params.getChunkSize()); httpMethod.getParams().setSoTimeout(params.getSocketTimeout()); - httpMethod.getParams().setHttpElementCharset(Consts.UTF_8.name()); - httpMethod.getParams().setUriCharset(Consts.UTF_8.name()); + httpMethod.getParams().setHttpElementCharset( + Consts.UTF_8.name()); + httpMethod.getParams().setParameter( + "http.protocol.uri-charset", Consts.UTF_8.name()); + // httpMethod.getParams().setUriCharset(Consts.UTF_8.name()); httpMethod.getParams().setContentCharset(Consts.UTF_8.name()); } if (useSSL) { @@ -143,8 +146,7 @@ public class HttpComponent3 extends AbstractHttpClient { if (!headers.containsKey(HttpHeaders.USER_AGENT)) { headers.set(HttpHeaders.USER_AGENT, "apache/httpclient3"); } - for (Entry> header : headers - .entrySet()) { + for (Entry> header : headers.entrySet()) { if (HttpHeaders.COOKIE.equalsIgnoreCase(header.getKey())) { httpMethod.setRequestHeader(header.getKey(), StringUtil.join(header.getValue(), ';')); diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Factory.java index 56c1aae5..4428eaa1 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Factory.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Factory.java @@ -3,8 +3,8 @@ package com.foxinmy.weixin4j.http.factory; import org.apache.commons.httpclient.HttpClient; /** - * 使用Apache的HttpClient3.x - * + * 使用commons-httpclient3.x + * * @className HttpComponent3Factory * @author jinyu(foxinmy@gmail.com) * @date 2015年8月12日 diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Response.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Response.java index 9f82c96a..c3d10376 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Response.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpComponent3Response.java @@ -12,8 +12,8 @@ import com.foxinmy.weixin4j.http.HttpStatus; import com.foxinmy.weixin4j.http.HttpVersion; /** - * HttpComponent3 Response - * + * HttpComponent3 Response:Requires commons-httpclient 3.0 or higher + * * @className HttpComponent3Response * @author jinyu(foxinmy@gmail.com) * @date 2015年8月17日 diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java index 9fa31f4f..3bf094fc 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java @@ -18,7 +18,7 @@ import com.foxinmy.weixin4j.xml.XmlStream; * @date 2015年1月9日 * @since JDK 1.6 */ -public class FileTokenStorager implements TokenStorager { +public class FileTokenStorager extends TokenStorager { private final String cachePath; @@ -37,7 +37,7 @@ public class FileTokenStorager implements TokenStorager { if (token.getCreateTime() < 0) { return token; } - if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - CUTMS) > System + if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - ms()) > System .currentTimeMillis()) { return token; } @@ -83,7 +83,7 @@ public class FileTokenStorager implements TokenStorager { @Override public boolean accept(File file) { return file.isFile() - && file.getName().startsWith(PREFIX) + && file.getName().startsWith(prefix()) && "xml".equals(FileUtil.getFileExtension(file .getName())); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java index 1d54bee7..e6c57a23 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java @@ -17,7 +17,7 @@ import com.whalin.MemCached.SockIOPool; * @since JDK 1.6 * @see */ -public class MemcacheTokenStorager implements TokenStorager { +public class MemcacheTokenStorager extends TokenStorager { private final MemCachedClient mc; @@ -36,7 +36,7 @@ public class MemcacheTokenStorager implements TokenStorager { if (token.getExpiresIn() > 0) { mc.set(cacheKey, token, new Date(token.getCreateTime() + token.getExpiresIn() - * 1000 - CUTMS)); + * 1000 - ms())); } else { mc.set(cacheKey, token); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java index ee1c200b..489b89e7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java @@ -14,7 +14,7 @@ import com.foxinmy.weixin4j.model.Token; * @since JDK 1.6 * @see */ -public class MemoryTokenStorager implements TokenStorager { +public class MemoryTokenStorager extends TokenStorager { private final Map CONMAP; @@ -26,7 +26,7 @@ public class MemoryTokenStorager implements TokenStorager { public Token lookup(String cacheKey) { Token token = this.CONMAP.get(cacheKey); if (token != null) { - if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - CUTMS) > System + if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - ms()) > System .currentTimeMillis()) { return token; } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java index 845cefff..bb57bbe7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java @@ -19,7 +19,7 @@ import com.foxinmy.weixin4j.model.Token; * @date 2015年1月9日 * @since JDK 1.6 */ -public class RedisTokenStorager implements TokenStorager { +public class RedisTokenStorager extends TokenStorager { private JedisPool jedisPool; @@ -79,7 +79,7 @@ public class RedisTokenStorager implements TokenStorager { jedis.hmset(cacheKey, token2map(token)); if (token.getExpiresIn() > 0) { jedis.expire(cacheKey, token.getExpiresIn() - - (int) (CUTMS / 1000l)); + - (int) (ms() / 1000l)); } } finally { if (jedis != null) { @@ -130,7 +130,7 @@ public class RedisTokenStorager implements TokenStorager { Jedis jedis = null; try { jedis = jedisPool.getResource(); - Set cacheKeys = jedis.keys(String.format("%s*", PREFIX)); + Set cacheKeys = jedis.keys(String.format("%s*", prefix())); if (!cacheKeys.isEmpty()) { Pipeline pipeline = jedis.pipelined(); for (String cacheKey : cacheKeys) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java index e03cc00f..0f9431a6 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java @@ -15,13 +15,22 @@ import com.foxinmy.weixin4j.model.Token; * @see RedisTokenStorager * @see MemcacheTokenStorager */ -public interface TokenStorager extends CacheStorager { +public abstract class TokenStorager implements CacheStorager { /** - * 考虑到临界情况,在实际有效时间上减去60秒 + * 考虑到临界情况,实际token的有效时间减去该毫秒数 + * + * @return 默认为60秒 */ - final long CUTMS = 60 * 1000l; + public long ms() { + return 60 * 1000l; + } + /** * 缓存key的前缀 + * + * @return 默认为weixin4j_ */ - final String PREFIX = "weixin4j_"; + public String prefix() { + return "weixin4j_"; + } }