@@ -305,18 +305,25 @@ public String get(String url, String queryParam) throws WxErrorException {
305305
306306 @ Override
307307 public String post (String url , String postData ) throws WxErrorException {
308- return execute (SimplePostRequestExecutor .create (this ), url , postData );
308+ return execute (SimplePostRequestExecutor .create (this ), url , postData ,false );
309+ }
310+
311+ public String post (String url , String postData ,boolean withoutSuiteAccessToken ) throws WxErrorException {
312+ return execute (SimplePostRequestExecutor .create (this ), url , postData ,withoutSuiteAccessToken );
309313 }
310314
311315 /**
312316 * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求.
313317 */
314318 @ Override
315319 public <T , E > T execute (RequestExecutor <T , E > executor , String uri , E data ) throws WxErrorException {
320+ return execute (executor , uri , data ,false );
321+ }
322+ public <T , E > T execute (RequestExecutor <T , E > executor , String uri , E data ,boolean withoutSuiteAccessToken ) throws WxErrorException {
316323 int retryTimes = 0 ;
317324 do {
318325 try {
319- return this .executeInternal (executor , uri , data );
326+ return this .executeInternal (executor , uri , data , withoutSuiteAccessToken );
320327 } catch (WxErrorException e ) {
321328 if (retryTimes + 1 > this .maxRetryTimes ) {
322329 log .warn ("重试达到最大次数【{}】" , this .maxRetryTimes );
@@ -347,14 +354,22 @@ public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) thro
347354 }
348355
349356 protected <T , E > T executeInternal (RequestExecutor <T , E > executor , String uri , E data ) throws WxErrorException {
357+ return executeInternal ( executor , uri ,data ,false );
358+ }
359+ protected <T , E > T executeInternal (RequestExecutor <T , E > executor , String uri , E data ,boolean withoutSuiteAccessToken ) throws WxErrorException {
350360 E dataForLog = DataUtils .handleDataWithSecret (data );
351361
352362 if (uri .contains ("suite_access_token=" )) {
353363 throw new IllegalArgumentException ("uri参数中不允许有suite_access_token: " + uri );
354364 }
355- String suiteAccessToken = getSuiteAccessToken (false );
365+ String uriWithAccessToken ;
366+ if (!withoutSuiteAccessToken ){
367+ String suiteAccessToken = getSuiteAccessToken (false );
368+ uriWithAccessToken = uri + (uri .contains ("?" ) ? "&" : "?" ) + "suite_access_token=" + suiteAccessToken ;
369+ }else {
370+ uriWithAccessToken = uri ;
371+ }
356372
357- String uriWithAccessToken = uri + (uri .contains ("?" ) ? "&" : "?" ) + "suite_access_token=" + suiteAccessToken ;
358373
359374 try {
360375 T result = executor .execute (uriWithAccessToken , data , WxType .CP );
@@ -452,9 +467,10 @@ public String getWxCpProviderToken() throws WxErrorException {
452467 JsonObject jsonObject = new JsonObject ();
453468 jsonObject .addProperty ("corpid" , configStorage .getCorpId ());
454469 jsonObject .addProperty ("provider_secret" , configStorage .getProviderSecret ());
470+ //providerAccessToken 的获取不需要suiteAccessToken ,一不必要,二可以提高效率
455471 WxCpProviderToken wxCpProviderToken =
456472 WxCpProviderToken .fromJson (this .post (this .configStorage .getApiUrl (GET_PROVIDER_TOKEN )
457- , jsonObject .toString ()));
473+ , jsonObject .toString (), true ));
458474 String providerAccessToken = wxCpProviderToken .getProviderAccessToken ();
459475 Integer expiresIn = wxCpProviderToken .getExpiresIn ();
460476
0 commit comments