diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
index 8a0dd2d9..e8a03daf 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
@@ -6,8 +6,8 @@ import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
/**
- * Http 参数
- *
+ * Http请求参数
+ *
* @className HttpParams
* @author jinyu(foxinmy@gmail.com)
* @date 2015年8月13日
@@ -16,104 +16,204 @@ import javax.net.ssl.SSLContext;
*/
public final class HttpParams {
- private boolean allowUserInteraction = true;
- private int connectTimeout = 5000;
- private int socketTimeout = 5000;
- private int readTimeout = 5000;
- private int chunkSize = 4096;
- private long ifModifiedSince = 0l;
- private boolean followRedirects = false;
-
+ private final boolean allowUserInteraction;
+ private final int connectTimeout;
+ private final int socketTimeout;
+ private final int readTimeout;
+ private final int chunkSize;
+ private final boolean followRedirects;
/**
* 代理对象
*/
- private Proxy proxy;
+ private final Proxy proxy;
/**
* SSL对象
*/
- private SSLContext sslContext;
+ private final SSLContext sslContext;
/**
* hostname对象
*/
- private HostnameVerifier hostnameVerifier;
+ private final HostnameVerifier hostnameVerifier;
+
+ HttpParams(boolean allowUserInteraction, int connectTimeout,
+ int socketTimeout, int readTimeout, int chunkSize,
+ boolean followRedirects, Proxy proxy, SSLContext sslContext,
+ HostnameVerifier hostnameVerifier) {
+ this.allowUserInteraction = allowUserInteraction;
+ this.connectTimeout = connectTimeout;
+ this.socketTimeout = socketTimeout;
+ this.readTimeout = readTimeout;
+ this.chunkSize = chunkSize;
+ this.followRedirects = followRedirects;
+ this.proxy = proxy;
+ this.sslContext = sslContext;
+ this.hostnameVerifier = hostnameVerifier;
+ }
public boolean isAllowUserInteraction() {
return allowUserInteraction;
}
- public void setAllowUserInteraction(boolean allowUserInteraction) {
- this.allowUserInteraction = allowUserInteraction;
- }
-
public int getConnectTimeout() {
return connectTimeout;
}
- public void setConnectTimeout(int connectTimeout) {
- this.connectTimeout = connectTimeout;
- }
-
public int getSocketTimeout() {
return socketTimeout;
}
- public void setSocketTimeout(int socketTimeout) {
- this.socketTimeout = socketTimeout;
- }
-
public int getReadTimeout() {
return readTimeout;
}
- public void setReadTimeout(int readTimeout) {
- this.readTimeout = readTimeout;
- }
-
public int getChunkSize() {
return chunkSize;
}
- public void setChunkSize(int chunkSize) {
- this.chunkSize = chunkSize;
- }
-
- public long getIfModifiedSince() {
- return ifModifiedSince;
- }
-
- public void setIfModifiedSince(long ifModifiedSince) {
- this.ifModifiedSince = ifModifiedSince;
- }
-
public boolean isFollowRedirects() {
return followRedirects;
}
- public void setFollowRedirects(boolean followRedirects) {
- this.followRedirects = followRedirects;
- }
-
public Proxy getProxy() {
return proxy;
}
- public void setProxy(Proxy proxy) {
- this.proxy = proxy;
- }
-
public SSLContext getSSLContext() {
return sslContext;
}
- public void setSSLContext(SSLContext sslContext) {
- this.sslContext = sslContext;
- }
-
public HostnameVerifier getHostnameVerifier() {
return hostnameVerifier;
}
- public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
- this.hostnameVerifier = hostnameVerifier;
+ public static HttpParams.Builder custom() {
+ return new Builder();
+ }
+
+ public static HttpParams.Builder copy(final HttpParams params) {
+ return new Builder()
+ .setAllowUserInteraction(params.isAllowUserInteraction())
+ .setConnectTimeout(params.getConnectTimeout())
+ .setSocketTimeout(params.getSocketTimeout())
+ .setReadTimeout(params.getReadTimeout())
+ .setChunkSize(params.getChunkSize())
+ .setFollowRedirects(params.isFollowRedirects());
+ }
+
+ public static class Builder {
+ private boolean allowUserInteraction;
+ private int connectTimeout;
+ private int socketTimeout;
+ private int readTimeout;
+ private int chunkSize;
+ private boolean followRedirects;
+ /**
+ * 代理对象
+ */
+ private Proxy proxy;
+ /**
+ * SSL对象
+ */
+ private SSLContext sslContext;
+ /**
+ * hostname对象
+ */
+ private HostnameVerifier hostnameVerifier;
+
+ Builder() {
+ this.allowUserInteraction = true;
+ this.connectTimeout = 5000;
+ this.socketTimeout = 5000;
+ this.readTimeout = 5000;
+ this.chunkSize = 4096;
+ this.followRedirects = false;
+ }
+
+ public boolean isAllowUserInteraction() {
+ return allowUserInteraction;
+ }
+
+ public Builder setAllowUserInteraction(boolean allowUserInteraction) {
+ this.allowUserInteraction = allowUserInteraction;
+ return this;
+ }
+
+ public int getConnectTimeout() {
+ return connectTimeout;
+ }
+
+ public Builder setConnectTimeout(int connectTimeout) {
+ this.connectTimeout = connectTimeout;
+ return this;
+ }
+
+ public int getSocketTimeout() {
+ return socketTimeout;
+ }
+
+ public Builder setSocketTimeout(int socketTimeout) {
+ this.socketTimeout = socketTimeout;
+ return this;
+ }
+
+ public int getReadTimeout() {
+ return readTimeout;
+ }
+
+ public Builder setReadTimeout(int readTimeout) {
+ this.readTimeout = readTimeout;
+ return this;
+ }
+
+ public int getChunkSize() {
+ return chunkSize;
+ }
+
+ public Builder setChunkSize(int chunkSize) {
+ this.chunkSize = chunkSize;
+ return this;
+ }
+
+ public boolean isFollowRedirects() {
+ return followRedirects;
+ }
+
+ public Builder setFollowRedirects(boolean followRedirects) {
+ this.followRedirects = followRedirects;
+ return this;
+ }
+
+ public Proxy getProxy() {
+ return proxy;
+ }
+
+ public Builder setProxy(Proxy proxy) {
+ this.proxy = proxy;
+ return this;
+ }
+
+ public SSLContext getSslContext() {
+ return sslContext;
+ }
+
+ public Builder setSslContext(SSLContext sslContext) {
+ this.sslContext = sslContext;
+ return this;
+ }
+
+ public HostnameVerifier getHostnameVerifier() {
+ return hostnameVerifier;
+ }
+
+ public Builder setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ return this;
+ }
+
+ public HttpParams build() {
+ return new HttpParams(allowUserInteraction, connectTimeout,
+ socketTimeout, readTimeout, chunkSize, followRedirects,
+ proxy, sslContext, hostnameVerifier);
+ }
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
index 7e0b894d..3a8dcb7a 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/SimpleHttpClient.java
@@ -22,7 +22,7 @@ import com.foxinmy.weixin4j.util.StringUtil;
/**
* HTTP 简单实现
- *
+ *
* @className SimpleHttpClient
* @author jinyu(foxinmy@gmail.com)
* @date 2015年5月29日
@@ -87,7 +87,6 @@ public class SimpleHttpClient extends AbstractHttpClient implements HttpClient {
.isAllowUserInteraction());
connection.setConnectTimeout(params.getConnectTimeout());
connection.setReadTimeout(params.getReadTimeout());
- connection.setIfModifiedSince(params.getIfModifiedSince());
connection.setInstanceFollowRedirects(params
.isFollowRedirects());
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java
index b163cf53..e1bed0b8 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinRequestExecutor.java
@@ -38,16 +38,16 @@ public class WeixinRequestExecutor {
protected final InternalLogger logger = InternalLoggerFactory
.getInstance(getClass());
- protected final HttpClient httpClient;
- protected final HttpParams params;
+ private final HttpClient httpClient;
+ private final HttpParams httpParams;
public WeixinRequestExecutor() {
- this(new HttpParams());
+ this(HttpParams.custom().build());
}
- public WeixinRequestExecutor(HttpParams params) {
+ public WeixinRequestExecutor(HttpParams httpParams) {
this.httpClient = HttpClientFactory.getInstance();
- this.params = params;
+ this.httpParams = httpParams;
}
public WeixinResponse get(String url) throws WeixinException {
@@ -95,7 +95,7 @@ public class WeixinRequestExecutor {
protected WeixinResponse doRequest(HttpRequest request)
throws WeixinException {
- request.setParams(params);
+ request.setParams(httpParams);
try {
logger.info("weixin request >> " + request.getMethod() + " "
+ request.getURI().toString());
@@ -180,6 +180,6 @@ public class WeixinRequestExecutor {
}
public HttpParams getExecuteParams() {
- return params;
+ return httpParams;
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinSSLRequestExecutor.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinSSLRequestExecutor.java
index 96d55c9e..dc7a4b0f 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinSSLRequestExecutor.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/weixin/WeixinSSLRequestExecutor.java
@@ -7,11 +7,13 @@ import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import com.foxinmy.weixin4j.exception.WeixinException;
+import com.foxinmy.weixin4j.http.HttpParams;
+import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.model.Consts;
/**
* 微信ssl请求
- *
+ *
* @className WeixinSSLRequestExecutor
* @author jinyu(foxinmy@gmail.com)
* @date 2015年8月17日
@@ -36,15 +38,27 @@ public class WeixinSSLRequestExecutor extends WeixinRequestExecutor {
} catch (Exception e) {
throw new WeixinException("Key load error", e);
}
- params.setSSLContext(sslContext);
}
public WeixinSSLRequestExecutor(SSLContext sslContext) {
this.sslContext = sslContext;
- params.setSSLContext(sslContext);
}
public SSLContext getSSLContext() {
return sslContext;
}
+
+ @Override
+ protected WeixinResponse doRequest(HttpRequest request)
+ throws WeixinException {
+ HttpParams params = null;
+ if (request.getParams() != null) {
+ params = HttpParams.copy(request.getParams())
+ .setSslContext(sslContext).build();
+ } else {
+ params = HttpParams.custom().setSslContext(sslContext).build();
+ }
+ request.setParams(params);
+ return super.doRequest(request);
+ }
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
index 7a29b118..35809f63 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
@@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
+import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.api.CashApi;
import com.foxinmy.weixin4j.api.CouponApi;
import com.foxinmy.weixin4j.api.CustomsApi;
@@ -42,6 +43,7 @@ import com.foxinmy.weixin4j.type.BillType;
import com.foxinmy.weixin4j.type.CurrencyType;
import com.foxinmy.weixin4j.type.CustomsCity;
import com.foxinmy.weixin4j.type.IdQuery;
+import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* 微信支付接口实现
@@ -73,13 +75,16 @@ public class WeixinPayProxy {
/**
* 配置信息
*/
- private final Weixin4jSettings settings;
+ private final Weixin4jSettings settings;
/**
* 使用weixin4j.properties配置的支付账号信息
*/
public WeixinPayProxy() {
- this(new Weixin4jSettings());
+ this(
+ new Weixin4jSettings(JSON.parseObject(
+ Weixin4jConfigUtil.getValue("account"),
+ WeixinPayAccount.class)));
}
/**
@@ -88,21 +93,21 @@ public class WeixinPayProxy {
* 支付相关配置信息
* @see com.foxinmy.weixin4j.setting.Weixin4jSettings
*/
- public WeixinPayProxy(Weixin4jSettings settings) {
+ public WeixinPayProxy(Weixin4jSettings settings) {
this.settings = settings;
- this.payApi = new PayApi(settings.getPayAccount());
- this.couponApi = new CouponApi(settings.getPayAccount());
- this.cashApi = new CashApi(settings.getPayAccount());
- this.customsApi = new CustomsApi(settings.getPayAccount());
+ this.payApi = new PayApi(settings.getAccount());
+ this.couponApi = new CouponApi(settings.getAccount());
+ this.cashApi = new CashApi(settings.getAccount());
+ this.customsApi = new CustomsApi(settings.getAccount());
}
/**
- * 获取微信商户支付信息
+ * 获取微信商户账号信息
*
* @return
*/
public WeixinPayAccount getWeixinPayAccount() {
- return this.settings.getPayAccount();
+ return settings.getAccount();
}
/**
@@ -111,7 +116,7 @@ public class WeixinPayProxy {
* @return
*/
public WeixinSignature getWeixinSignature() {
- return this.payApi.getWeixinSignature();
+ return payApi.getWeixinSignature();
}
/**
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java
deleted file mode 100644
index 8e8178c9..00000000
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.foxinmy.weixin4j.setting;
-
-import com.foxinmy.weixin4j.http.HttpParams;
-
-/**
- * 系统配置相关
- *
- * @className SystemSettings
- * @author jinyu(foxinmy@gmail.com)
- * @date 2016年1月28日
- * @since JDK 1.6
- * @see
- */
-public abstract class SystemSettings {
- /**
- * 账号信息
- */
- private T account;
- /**
- * Http参数
- */
- private HttpParams httpParams;
- /**
- * 系统临时目录
- */
- private String tmpdir;
-
- /**
- * @param account
- */
- public SystemSettings(T account) {
- this.account = account;
- }
-
- public T getAccount() {
- return account;
- }
-
- public HttpParams getHttpParams() {
- return httpParams;
- }
-
- public HttpParams getHttpParams0() {
- if (httpParams == null) {
- return new HttpParams();
- }
- return httpParams;
- }
-
- public String getTmpdir() {
- return tmpdir;
- }
-
- public abstract String getTmpdir0();
-
- public void setHttpParams(HttpParams httpParams) {
- this.httpParams = httpParams;
- }
-
- public void setTmpdir(String tmpdir) {
- this.tmpdir = tmpdir;
- }
-
- @Override
- public String toString() {
- return "account=" + account + ", httpParams=" + httpParams
- + ", tmpdir=" + tmpdir;
- }
-}
\ No newline at end of file
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java
index 4cb4ee82..b490f9c3 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java
@@ -1,11 +1,9 @@
package com.foxinmy.weixin4j.setting;
-import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.cache.CacheStorager;
import com.foxinmy.weixin4j.cache.FileCacheStorager;
+import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.model.Token;
-import com.foxinmy.weixin4j.model.WeixinAccount;
-import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
@@ -18,11 +16,19 @@ import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
* @since JDK 1.6
* @see
*/
-public class Weixin4jSettings extends SystemSettings {
+public class Weixin4jSettings {
/**
- * 微信支付账号信息
+ * 账号信息
*/
- private WeixinPayAccount weixinPayAccount;
+ private final T account;
+ /**
+ * Http参数
+ */
+ private HttpParams httpParams;
+ /**
+ * 系统临时目录
+ */
+ private String tmpdir;
/**
* Token的存储方式 默认为FileCacheStorager
*/
@@ -32,60 +38,36 @@ public class Weixin4jSettings extends SystemSettings {
*/
private String certificateFile;
- /**
- * 默认使用weixin4j.properties配置的信息
- */
- public Weixin4jSettings() {
- this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
- WeixinPayAccount.class), null);
+ public Weixin4jSettings(T account) {
+ this.account = account;
}
- /**
- * 支付代理接口
- *
- * @param weixinPayAccount
- * 商户信息
- * @param certificateFile
- * 支付接口需要的证书文件(*.p12),比如退款接口
- */
- public Weixin4jSettings(WeixinPayAccount weixinPayAccount,
- String certificateFile) {
- this(weixinPayAccount);
- this.certificateFile = certificateFile;
+ public T getAccount() {
+ return account;
}
- /**
- * 支付代理接口
- *
- * @param weixinPayAccount
- * 商户信息
- */
- public Weixin4jSettings(WeixinPayAccount weixinPayAccount) {
- this(new WeixinAccount(weixinPayAccount.getId(),
- weixinPayAccount.getSecret()));
- this.weixinPayAccount = weixinPayAccount;
+ public HttpParams getHttpParams() {
+ return httpParams;
}
- /**
- * 账号信息
- *
- * @param account
- */
- public Weixin4jSettings(WeixinAccount account) {
- super(account);
+ public String getTmpdir() {
+ return tmpdir;
}
- public WeixinPayAccount getPayAccount() {
- return weixinPayAccount;
+ public void setHttpParams(HttpParams httpParams) {
+ this.httpParams = httpParams;
+ }
+
+ public void setTmpdir(String tmpdir) {
+ this.tmpdir = tmpdir;
}
- @Override
public String getTmpdir0() {
- if (StringUtil.isBlank(getTmpdir())) {
- return Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
+ if (StringUtil.isBlank(tmpdir)) {
+ return Weixin4jConfigUtil.getValue("weixin4j.tmpdir",
System.getProperty("java.io.tmpdir"));
}
- return getTmpdir();
+ return tmpdir;
}
public CacheStorager getCacheStorager() {
@@ -121,8 +103,8 @@ public class Weixin4jSettings extends SystemSettings {
@Override
public String toString() {
- return "Weixin4jSettings [weixinPayAccount=" + weixinPayAccount
- + ", certificateFile=" + certificateFile + ", "
- + super.toString() + "]";
+ return "Weixin4jSettings [account=" + account + ", httpParams="
+ + httpParams + ", tmpdir=" + tmpdir + ", cacheStorager="
+ + cacheStorager + ", certificateFile=" + certificateFile + "]";
}
-}
+}
\ No newline at end of file
diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java
index 1f0ffdc3..e3820ead 100644
--- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java
+++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/HttpClientTest.java
@@ -23,10 +23,12 @@ public class HttpClientTest {
static HttpRequest request = new HttpRequest(HttpMethod.GET,
"http://www.iteye.com/");
static {
- HttpParams params = new HttpParams();
- params.setProxy(new Proxy(Type.HTTP, new InetSocketAddress(
- "117.136.234.9", 80)));
- //request.setParams(params);
+ HttpParams params = HttpParams
+ .custom()
+ .setProxy(
+ new Proxy(Type.HTTP, new InetSocketAddress(
+ "117.136.234.9", 80))).build();
+ // request.setParams(params);
}
public static void test1() throws HttpClientException {
@@ -68,6 +70,6 @@ public class HttpClientTest {
public static void main(String[] args) throws Exception {
test1();
-
+
}
}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
index a0afe392..77c762da 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
@@ -58,6 +58,7 @@ import com.foxinmy.weixin4j.tuple.MpVideo;
import com.foxinmy.weixin4j.tuple.Tuple;
import com.foxinmy.weixin4j.type.MediaType;
import com.foxinmy.weixin4j.type.TicketType;
+import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* 微信公众平台接口实现
@@ -125,13 +126,14 @@ public class WeixinProxy {
/**
* 配置信息
*/
- private Weixin4jSettings settings;
+ private Weixin4jSettings settings;
/**
* 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
*/
public WeixinProxy() {
- this(new Weixin4jSettings());
+ this(new Weixin4jSettings(
+ Weixin4jConfigUtil.getWeixinAccount()));
}
/**
@@ -140,7 +142,7 @@ public class WeixinProxy {
* 微信配置信息
* @see com.foxinmy.weixin4j.setting.Weixin4jSettings
*/
- public WeixinProxy(Weixin4jSettings settings) {
+ public WeixinProxy(Weixin4jSettings settings) {
this(new TokenManager(new WeixinTokenCreator(settings.getAccount()
.getId(), settings.getAccount().getSecret()),
settings.getCacheStorager0()));
@@ -152,6 +154,7 @@ public class WeixinProxy {
*
* @see com.foxinmy.weixin4j.mp.token.WeixinTokenCreator
* @param tokenManager
+ * token管理
*/
private WeixinProxy(TokenManager tokenManager) {
this.tokenManager = tokenManager;
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
index f4cce2d6..2c32412f 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
@@ -17,7 +17,6 @@ import com.foxinmy.weixin4j.http.ContentType;
import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpHeaders;
import com.foxinmy.weixin4j.http.HttpMethod;
-import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.http.HttpResponse;
import com.foxinmy.weixin4j.http.apache.ByteArrayBody;
@@ -252,8 +251,7 @@ public class MediaApi extends MpApi {
request = new HttpRequest(HttpMethod.GET, String.format(
meida_download_uri, token.getAccessToken(), mediaId));
}
- HttpParams params = weixinExecutor.getExecuteParams();
- request.setParams(params);
+ request.setParams(weixinExecutor.getExecuteParams());
logger.info("weixin request >> " + request.getMethod() + " "
+ request.getURI().toString());
HttpResponse response = weixinExecutor.getExecuteClient().execute(
diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
index a19956b2..33d8f01a 100644
--- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
+++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
@@ -5,9 +5,11 @@ import org.junit.Before;
import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException;
+import com.foxinmy.weixin4j.model.WeixinAccount;
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
import com.foxinmy.weixin4j.token.TokenManager;
+import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* token测试
@@ -20,11 +22,12 @@ import com.foxinmy.weixin4j.token.TokenManager;
public class TokenTest {
protected TokenManager tokenManager;
- protected Weixin4jSettings settings;
+ protected Weixin4jSettings settings;
@Before
public void setUp() {
- this.settings = new Weixin4jSettings();
+ this.settings = new Weixin4jSettings(
+ Weixin4jConfigUtil.getWeixinAccount());
tokenManager = new TokenManager(new WeixinTokenCreator(settings
.getAccount().getId(), settings.getAccount().getSecret()),
settings.getCacheStorager0());
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
index 38b98df6..a26ff812 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
@@ -51,6 +51,7 @@ import com.foxinmy.weixin4j.token.TokenManager;
import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.type.MediaType;
import com.foxinmy.weixin4j.type.TicketType;
+import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* 微信企业号接口实现
@@ -110,13 +111,14 @@ public class WeixinProxy {
/**
* 配置信息
*/
- private Weixin4jSettings settings;
+ private Weixin4jSettings settings;
/**
* 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
*/
public WeixinProxy() {
- this(new Weixin4jSettings());
+ this(new Weixin4jSettings(
+ Weixin4jConfigUtil.getWeixinAccount()));
}
/**
@@ -125,7 +127,7 @@ public class WeixinProxy {
* 微信配置信息
* @see com.foxinmy.weixin4j.setting.Weixin4jSettings
*/
- public WeixinProxy(Weixin4jSettings settings) {
+ public WeixinProxy(Weixin4jSettings settings) {
this(new TokenManager(new WeixinTokenCreator(settings.getAccount()
.getId(), settings.getAccount().getSecret()),
settings.getCacheStorager0()));
@@ -148,7 +150,7 @@ public class WeixinProxy {
TokenManager suiteTokenManager) {
this(new TokenManager(new WeixinTokenSuiteCreator(perCodeManager,
suiteTokenManager), perCodeManager.getCacheStorager()));
- this.settings = new Weixin4jSettings(new WeixinAccount(
+ this.settings = new Weixin4jSettings(new WeixinAccount(
perCodeManager.getAuthCorpId(), null));
}
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java
index f03cc3a2..750e626b 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java
@@ -3,8 +3,10 @@ package com.foxinmy.weixin4j.qy;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.model.Consts;
import com.foxinmy.weixin4j.model.WeixinAccount;
@@ -13,10 +15,10 @@ import com.foxinmy.weixin4j.qy.api.SuiteApi;
import com.foxinmy.weixin4j.qy.model.OUserInfo;
import com.foxinmy.weixin4j.qy.model.WeixinQyAccount;
import com.foxinmy.weixin4j.qy.suite.SuiteTicketManager;
-import com.foxinmy.weixin4j.qy.suite.Weixin4jSuiteSettings;
import com.foxinmy.weixin4j.qy.token.WeixinProviderTokenCreator;
import com.foxinmy.weixin4j.qy.type.LoginTargetType;
import com.foxinmy.weixin4j.qy.type.URLConsts;
+import com.foxinmy.weixin4j.setting.Weixin4jSettings;
import com.foxinmy.weixin4j.token.TokenManager;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
@@ -46,41 +48,44 @@ public class WeixinSuiteProxy {
/**
* 配置相关
*/
- private final Weixin4jSuiteSettings suiteSettings;
+ private final Weixin4jSettings settings;
+ /**
+ * 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
+ */
public WeixinSuiteProxy() {
- this(new Weixin4jSuiteSettings());
+ this(new Weixin4jSettings(JSON.parseObject(
+ Weixin4jConfigUtil.getValue("account"), WeixinQyAccount.class)));
}
/**
*
- * @param suiteSettings
- * 套件信息配置
+ * @param settings
+ * 配置信息
*/
- public WeixinSuiteProxy(Weixin4jSuiteSettings suiteSettings) {
- this.suiteSettings = suiteSettings;
- if (suiteSettings.getAccount().getSuiteAccounts() != null) {
- this.suiteMap = new HashMap();
- for (WeixinAccount suite : suiteSettings.getAccount()
- .getSuiteAccounts()) {
- this.suiteMap.put(suite.getId(), new SuiteApi(
- new SuiteTicketManager(suite.getId(), suite.getSecret(),
- suiteSettings.getCacheStorager0())));
+ public WeixinSuiteProxy(Weixin4jSettings settings) {
+ this.settings = settings;
+ List suites = settings.getAccount().getSuites();
+ if (suites != null && !suites.isEmpty()) {
+ this.suiteMap = new HashMap(suites.size());
+ for (WeixinAccount suite : suites) {
this.suiteMap.put(
- null,
- suiteMap.get(suiteSettings.getAccount()
- .getSuiteAccounts().get(0).getId()));
+ suite.getId(),
+ new SuiteApi(
+ new SuiteTicketManager(suite.getId(), suite
+ .getSecret(), settings
+ .getCacheStorager0())));
}
+ this.suiteMap.put(null, suiteMap.get(suites.get(0).getId()));
}
- if (StringUtil.isNotBlank(suiteSettings.getAccount().getId())
- && StringUtil.isNotBlank(suiteSettings.getAccount()
+ if (StringUtil.isNotBlank(settings.getAccount().getId())
+ && StringUtil.isNotBlank(settings.getAccount()
.getProviderSecret())) {
- this.providerApi = new ProviderApi(new TokenManager(
- new WeixinProviderTokenCreator(suiteSettings
- .getAccount().getId(), suiteSettings
- .getAccount().getProviderSecret()),
- suiteSettings.getCacheStorager0()),
- suiteSettings.getCacheStorager0());
+ this.providerApi = new ProviderApi(
+ new TokenManager(new WeixinProviderTokenCreator(settings
+ .getAccount().getId(), settings.getAccount()
+ .getProviderSecret()), settings.getCacheStorager0()),
+ settings.getCacheStorager0());
}
}
@@ -90,7 +95,7 @@ public class WeixinSuiteProxy {
* @return
*/
public WeixinQyAccount getWeixinAccount() {
- return this.suiteSettings.getAccount();
+ return this.settings.getAccount();
}
/**
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
index 65e68329..fe677808 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
@@ -20,7 +20,6 @@ import com.foxinmy.weixin4j.http.ContentType;
import com.foxinmy.weixin4j.http.HttpClientException;
import com.foxinmy.weixin4j.http.HttpHeaders;
import com.foxinmy.weixin4j.http.HttpMethod;
-import com.foxinmy.weixin4j.http.HttpParams;
import com.foxinmy.weixin4j.http.HttpRequest;
import com.foxinmy.weixin4j.http.HttpResponse;
import com.foxinmy.weixin4j.http.apache.ByteArrayBody;
@@ -50,7 +49,7 @@ import com.foxinmy.weixin4j.util.StringUtil;
/**
* 媒体相关API
- *
+ *
* @className MediaApi
* @author jinyu(foxinmy@gmail.com)
* @date 2014年9月25日
@@ -70,7 +69,7 @@ public class MediaApi extends QyApi {
/**
* 上传图文消息内的图片:用于上传图片到企业号服务端,接口返回图片url,请注意,该url仅可用于图文消息的发送,
* 且每个企业每天最多只能上传100张图片。
- *
+ *
* @param is
* 图片数据
* @param fileName
@@ -103,7 +102,7 @@ public class MediaApi extends QyApi {
* 正常情况下返回{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789},
* 否则抛出异常.
*
- *
+ *
* @param agentid
* 企业应用ID(大于0时视为上传永久媒体文件)
* @param is
@@ -185,7 +184,7 @@ public class MediaApi extends QyApi {
/**
* 下载媒体文件
- *
+ *
* @param agentid
* 企业应用Id(大于0时视为获取永久媒体文件)
* @param mediaId
@@ -213,8 +212,7 @@ public class MediaApi extends QyApi {
request = new HttpRequest(HttpMethod.GET, String.format(
media_download_uri, token.getAccessToken(), mediaId));
}
- HttpParams params = weixinExecutor.getExecuteParams();
- request.setParams(params);
+ request.setParams(weixinExecutor.getExecuteParams());
logger.info("weixin request >> " + request.getMethod() + " "
+ request.getURI().toString());
HttpResponse response = weixinExecutor.getExecuteClient().execute(
@@ -260,7 +258,7 @@ public class MediaApi extends QyApi {
* 、新增的永久素材也可以在公众平台官网素材管理模块中看到,永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,
* 其他类型为1000
*
- *
+ *
* @param agentid
* 企业应用的id
* @param articles
@@ -289,7 +287,7 @@ public class MediaApi extends QyApi {
/**
* 删除永久媒体素材
- *
+ *
* @param agentid
* 企业应用ID
* @param mediaId
@@ -311,7 +309,7 @@ public class MediaApi extends QyApi {
/**
* 下载永久图文素材
- *
+ *
* @param agentid
* 企业应用ID
* @param mediaId
@@ -333,7 +331,7 @@ public class MediaApi extends QyApi {
/**
* 修改永久图文素材
- *
+ *
* @param agentid
* 企业应用的id
* @param mediaId
@@ -365,7 +363,7 @@ public class MediaApi extends QyApi {
/**
* 获取永久媒体素材的总数
- *
+ *
* @param agentid
* 企业应用id
* @return 总数对象
@@ -387,7 +385,7 @@ public class MediaApi extends QyApi {
/**
* 获取媒体素材记录列表
- *
+ *
* @param agentid
* 企业应用ID
* @param mediaType
@@ -427,7 +425,7 @@ public class MediaApi extends QyApi {
/**
* 获取全部的媒体素材
- *
+ *
* @param agentid
* 企业应用id
* @param mediaType
@@ -458,7 +456,7 @@ public class MediaApi extends QyApi {
/**
* 批量上传成员
- *
+ *
* @param users
* 成员列表
* @see {@link BatchApi#syncUser(String,Callback)}
@@ -474,7 +472,7 @@ public class MediaApi extends QyApi {
/**
* 批量上传部门
- *
+ *
* @param parties
* 部门列表
* @see {@link BatchApi#replaceParty(String,Callback)}
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
index 734dc43b..9794eb4b 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
@@ -8,7 +8,7 @@ import com.foxinmy.weixin4j.model.WeixinAccount;
/**
* 微信企业号信息
- *
+ *
* @className WeixinQyAccount
* @author jinyu(foxinmy@gmail.com)
* @date 2014年11月18日
@@ -23,7 +23,7 @@ public class WeixinQyAccount extends WeixinAccount {
/**
* 多个应用套件信息
*/
- private List suiteAccounts;
+ private List suites;
/**
* 第三方提供商secret(企业号登陆)
*/
@@ -34,7 +34,7 @@ public class WeixinQyAccount extends WeixinAccount {
private String chatSecret;
/**
- *
+ *
* @param corpid
* 企业ID 必填
* @param corpsecret
@@ -49,17 +49,17 @@ public class WeixinQyAccount extends WeixinAccount {
@JSONCreator
public WeixinQyAccount(@JSONField(name = "id") String corpid,
@JSONField(name = "secret") String corpsecret,
- @JSONField(name = "suiteAccounts") List suiteAccounts,
+ @JSONField(name = "suites") List suites,
@JSONField(name = "providerSecret") String providerSecret,
@JSONField(name = "chatSecret") String chatSecret) {
super(corpid, corpsecret);
- this.suiteAccounts = suiteAccounts;
+ this.suites = suites;
this.providerSecret = providerSecret;
this.chatSecret = chatSecret;
}
- public List getSuiteAccounts() {
- return suiteAccounts;
+ public List getSuites() {
+ return suites;
}
public String getProviderSecret() {
@@ -70,15 +70,15 @@ public class WeixinQyAccount extends WeixinAccount {
return chatSecret;
}
- public WeixinAccount[] suiteAccountsToArray() {
- return suiteAccounts != null ? suiteAccounts
- .toArray(new WeixinAccount[suiteAccounts.size()]) : null;
+ public WeixinAccount[] suitesToArray() {
+ return suites != null ? suites
+ .toArray(new WeixinAccount[suites.size()]) : null;
}
@Override
public String toString() {
return "WeixinQyAccount [" + super.toString() + ", suiteAccounts="
- + suiteAccounts + ", providerSecret=" + providerSecret
+ + suites + ", providerSecret=" + providerSecret
+ ", chatSecret=" + chatSecret + "]";
}
}
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/Weixin4jSuiteSettings.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/Weixin4jSuiteSettings.java
deleted file mode 100644
index efe717cb..00000000
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/Weixin4jSuiteSettings.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.foxinmy.weixin4j.qy.suite;
-
-import java.util.Arrays;
-
-import com.alibaba.fastjson.JSON;
-import com.foxinmy.weixin4j.cache.CacheStorager;
-import com.foxinmy.weixin4j.cache.FileCacheStorager;
-import com.foxinmy.weixin4j.model.Token;
-import com.foxinmy.weixin4j.model.WeixinAccount;
-import com.foxinmy.weixin4j.qy.model.WeixinQyAccount;
-import com.foxinmy.weixin4j.setting.SystemSettings;
-import com.foxinmy.weixin4j.util.StringUtil;
-import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
-
-/**
- * 微信第三方套件配置相关
- *
- * @className Weixin4jSuiteSettings
- * @author jinyu(foxinmy@gmail.com)
- * @date 2016年1月28日
- * @since JDK 1.6
- * @see
- */
-public class Weixin4jSuiteSettings extends SystemSettings {
- /**
- * Token的存储方式 默认为FileCacheStorager
- */
- private CacheStorager cacheStorager;
-
- /**
- * 默认使用weixin4j.properties配置的信息
- */
- public Weixin4jSuiteSettings() {
- this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
- WeixinQyAccount.class));
- }
-
- /**
- *
- * @param providerCorpId
- * 服务商的企业号ID 使用服务商API时必填项
- * @param providerSecret
- * 服务商secret 使用服务商API时必填项
- * @param suites
- * 套件信息 使用套件API时必填项
- */
- public Weixin4jSuiteSettings(String providerCorpId, String providerSecret,
- WeixinAccount... suites) {
- this(new WeixinQyAccount(providerCorpId, null, Arrays.asList(suites),
- providerSecret, null));
- }
-
- /**
- * 账号信息
- *
- * @param account
- */
- private Weixin4jSuiteSettings(WeixinQyAccount account) {
- super(account);
- }
-
- @Override
- public String getTmpdir0() {
- if (StringUtil.isBlank(getTmpdir())) {
- return Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
- System.getProperty("java.io.tmpdir"));
- }
- return getTmpdir();
- }
-
- public CacheStorager getCacheStorager() {
- return cacheStorager;
- }
-
- public CacheStorager getCacheStorager0() {
- if (cacheStorager == null) {
- return new FileCacheStorager(getTmpdir0());
- }
- return cacheStorager;
- }
-
- @Override
- public String toString() {
- return "Weixin4jSuiteSettings [" + super.toString() + "]";
- }
-}
diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
index dee6af79..8f494800 100644
--- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
+++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
@@ -5,9 +5,11 @@ import org.junit.Before;
import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException;
+import com.foxinmy.weixin4j.model.WeixinAccount;
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.setting.Weixin4jSettings;
import com.foxinmy.weixin4j.token.TokenManager;
+import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
/**
* token测试
@@ -20,14 +22,15 @@ import com.foxinmy.weixin4j.token.TokenManager;
public class TokenTest {
protected TokenManager tokenManager;
- protected Weixin4jSettings settings;
+ protected Weixin4jSettings settings;
@Before
public void setUp() {
- this.settings = new Weixin4jSettings();
+ this.settings = new Weixin4jSettings(
+ Weixin4jConfigUtil.getWeixinAccount());
tokenManager = new TokenManager(new WeixinTokenCreator(settings
- .getAccount().getId(), settings.getAccount()
- .getSecret()), settings.getCacheStorager0());
+ .getAccount().getId(), settings.getAccount().getSecret()),
+ settings.getCacheStorager0());
}
@Test