@@ -10,7 +10,6 @@ import me.chanjar.weixin.common.exception.WxErrorException; | |||||
import me.chanjar.weixin.common.util.fs.FileUtils; | import me.chanjar.weixin.common.util.fs.FileUtils; | ||||
import me.chanjar.weixin.common.util.http.apache.InputStreamResponseHandler; | import me.chanjar.weixin.common.util.http.apache.InputStreamResponseHandler; | ||||
import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler; | import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler; | ||||
import me.chanjar.weixin.common.util.http.okhttp.OkhttpProxyInfo; | import me.chanjar.weixin.common.util.http.okhttp.OkhttpProxyInfo; | ||||
import okhttp3.*; | import okhttp3.*; | ||||
@@ -112,7 +111,7 @@ public class MediaDownloadRequestExecutor extends AbstractRequestExecutor<File, | |||||
} | } | ||||
} | } | ||||
String fileName = getFileNameApache(response); | |||||
String fileName = getFileName(response); | |||||
if (StringUtils.isBlank(fileName)) { | if (StringUtils.isBlank(fileName)) { | ||||
return null; | return null; | ||||
} | } | ||||
@@ -129,6 +128,7 @@ public class MediaDownloadRequestExecutor extends AbstractRequestExecutor<File, | |||||
/** | /** | ||||
* jodd-http实现方式 | * jodd-http实现方式 | ||||
* | |||||
* @param provider | * @param provider | ||||
* @param proxyInfo | * @param proxyInfo | ||||
* @param uri | * @param uri | ||||
@@ -237,23 +237,7 @@ public class MediaDownloadRequestExecutor extends AbstractRequestExecutor<File, | |||||
if (m.matches()) { | if (m.matches()) { | ||||
return m.group(1); | return m.group(1); | ||||
} | } | ||||
request.withConnectionProvider(provider); | |||||
HttpResponse response = request.send(); | |||||
String contentType = response.header("Content-Type"); | |||||
if (contentType != null && contentType.startsWith("application/json")) { | |||||
// application/json; encoding=utf-8 下载媒体文件出错 | |||||
throw new WxErrorException(WxError.fromJson(response.bodyText())); | |||||
} | |||||
String fileName = getFileNameJodd(response); | |||||
if (StringUtils.isBlank(fileName)) { | |||||
return null; | |||||
} | |||||
InputStream inputStream = new ByteArrayInputStream(response.bodyBytes()); | |||||
String[] nameAndExt = fileName.split("\\."); | |||||
return FileUtils.createTmpFile(inputStream, nameAndExt[0], nameAndExt[1], this.tmpDirFile); | |||||
throw new WxErrorException(WxError.newBuilder().setErrorMsg("无法获取到文件名").build()); | |||||
} | } | ||||
} | } |
@@ -1,5 +1,6 @@ | |||||
package me.chanjar.weixin.cp.api.impl.apache; | package me.chanjar.weixin.cp.api.impl.apache; | ||||
import me.chanjar.weixin.common.bean.WxAccessToken; | import me.chanjar.weixin.common.bean.WxAccessToken; | ||||
import me.chanjar.weixin.common.bean.result.WxError; | import me.chanjar.weixin.common.bean.result.WxError; | ||||
import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||
@@ -7,7 +8,6 @@ import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder; | |||||
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder; | import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder; | ||||
import me.chanjar.weixin.cp.api.impl.AbstractWxCpService; | import me.chanjar.weixin.cp.api.impl.AbstractWxCpService; | ||||
import org.apache.http.HttpHost; | import org.apache.http.HttpHost; | ||||
import org.apache.http.client.config.RequestConfig; | import org.apache.http.client.config.RequestConfig; | ||||
import org.apache.http.client.methods.CloseableHttpResponse; | import org.apache.http.client.methods.CloseableHttpResponse; | ||||
@@ -73,7 +73,6 @@ public class WxCpServiceImpl extends AbstractWxCpService<CloseableHttpClient, Ht | |||||
} | } | ||||
@Override | @Override | ||||
public void initHttp() { | public void initHttp() { | ||||
ApacheHttpClientBuilder apacheHttpClientBuilder = this.configStorage | ApacheHttpClientBuilder apacheHttpClientBuilder = this.configStorage | ||||
.getApacheHttpClientBuilder(); | .getApacheHttpClientBuilder(); | ||||
@@ -92,5 +91,4 @@ public class WxCpServiceImpl extends AbstractWxCpService<CloseableHttpClient, Ht | |||||
this.httpClient = apacheHttpClientBuilder.build(); | this.httpClient = apacheHttpClientBuilder.build(); | ||||
} | } | ||||
} | } |
@@ -19,7 +19,6 @@ public class WxCpServiceImpl extends AbstractWxCpService<HttpConnectionProvider, | |||||
@Override | @Override | ||||
public ProxyInfo getRequestHttpProxy() { | public ProxyInfo getRequestHttpProxy() { | ||||
return httpProxy; | return httpProxy; | ||||
} | } | ||||
@Override | @Override | ||||
@@ -57,12 +56,10 @@ public class WxCpServiceImpl extends AbstractWxCpService<HttpConnectionProvider, | |||||
@Override | @Override | ||||
public void initHttp() { | public void initHttp() { | ||||
if (this.configStorage.getHttpProxyHost() != null && this.configStorage.getHttpProxyPort() > 0) { | if (this.configStorage.getHttpProxyHost() != null && this.configStorage.getHttpProxyPort() > 0) { | ||||
httpProxy = new ProxyInfo(ProxyInfo.ProxyType.HTTP, configStorage.getHttpProxyHost(), configStorage.getHttpProxyPort(), configStorage.getHttpProxyUsername(), configStorage.getHttpProxyPassword()); | httpProxy = new ProxyInfo(ProxyInfo.ProxyType.HTTP, configStorage.getHttpProxyHost(), configStorage.getHttpProxyPort(), configStorage.getHttpProxyUsername(), configStorage.getHttpProxyPassword()); | ||||
} | } | ||||
httpClient = JoddHttp.httpConnectionProvider; | httpClient = JoddHttp.httpConnectionProvider; | ||||
} | } | ||||
} | } |
@@ -1,6 +1,5 @@ | |||||
package me.chanjar.weixin.mp.api.impl.apache; | package me.chanjar.weixin.mp.api.impl.apache; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.concurrent.locks.Lock; | import java.util.concurrent.locks.Lock; | ||||
@@ -72,13 +71,11 @@ public class WxMpServiceImpl extends AbstractWxMpService<CloseableHttpClient,Htt | |||||
+ this.getWxMpConfigStorage().getSecret(); | + this.getWxMpConfigStorage().getSecret(); | ||||
try { | try { | ||||
HttpGet httpGet = new HttpGet(url); | HttpGet httpGet = new HttpGet(url); | ||||
if (this.getRequestHttpProxy() != null) { | if (this.getRequestHttpProxy() != null) { | ||||
RequestConfig config = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build(); | RequestConfig config = RequestConfig.custom().setProxy(this.getRequestHttpProxy()).build(); | ||||
httpGet.setConfig(config); | httpGet.setConfig(config); | ||||
} | } | ||||
try (CloseableHttpResponse response = getRequestHttpClient().execute(httpGet)) { | try (CloseableHttpResponse response = getRequestHttpClient().execute(httpGet)) { | ||||
String resultContent = new BasicResponseHandler().handleResponse(response); | String resultContent = new BasicResponseHandler().handleResponse(response); | ||||
WxError error = WxError.fromJson(resultContent); | WxError error = WxError.fromJson(resultContent); | ||||
if (error.getErrorCode() != 0) { | if (error.getErrorCode() != 0) { | ||||
@@ -99,5 +96,4 @@ public class WxMpServiceImpl extends AbstractWxMpService<CloseableHttpClient,Htt | |||||
} | } | ||||
return this.getWxMpConfigStorage().getAccessToken(); | return this.getWxMpConfigStorage().getAccessToken(); | ||||
} | } | ||||
} | } |
@@ -19,7 +19,7 @@ public class WxMpBusyRetryTest { | |||||
@DataProvider(name = "getService") | @DataProvider(name = "getService") | ||||
public Object[][] getService() { | public Object[][] getService() { | ||||
WxMpService service = new WxMpServiceImpl0() { | |||||
WxMpService service = new WxMpServiceImpl() { | |||||
@Override | @Override | ||||
public synchronized <T, E> T executeInternal( | public synchronized <T, E> T executeInternal( | ||||
@@ -20,7 +20,7 @@ public class ApiTestModule implements Module { | |||||
try (InputStream is1 = ClassLoader.getSystemResourceAsStream("test-config.xml")) { | try (InputStream is1 = ClassLoader.getSystemResourceAsStream("test-config.xml")) { | ||||
TestConfigStorage config = this.fromXml(TestConfigStorage.class, is1); | TestConfigStorage config = this.fromXml(TestConfigStorage.class, is1); | ||||
config.setAccessTokenLock(new ReentrantLock()); | config.setAccessTokenLock(new ReentrantLock()); | ||||
WxMpService wxService = new WxMpServiceImpl0(); | |||||
WxMpService wxService = new WxMpServiceImpl(); | |||||
wxService.setWxMpConfigStorage(config); | wxService.setWxMpConfigStorage(config); | ||||
binder.bind(WxMpService.class).toInstance(wxService); | binder.bind(WxMpService.class).toInstance(wxService); | ||||
@@ -5,7 +5,6 @@ import me.chanjar.weixin.mp.api.WxMpConfigStorage; | |||||
import me.chanjar.weixin.mp.api.WxMpMessageHandler; | import me.chanjar.weixin.mp.api.WxMpMessageHandler; | ||||
import me.chanjar.weixin.mp.api.WxMpMessageRouter; | import me.chanjar.weixin.mp.api.WxMpMessageRouter; | ||||
import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||
import me.chanjar.weixin.mp.api.impl.apache.WxMpServiceImpl; | import me.chanjar.weixin.mp.api.impl.apache.WxMpServiceImpl; | ||||
import org.eclipse.jetty.server.Server; | import org.eclipse.jetty.server.Server; | ||||
@@ -49,7 +48,7 @@ public class WxMpDemoServer { | |||||
.fromXml(is1); | .fromXml(is1); | ||||
wxMpConfigStorage = config; | wxMpConfigStorage = config; | ||||
wxMpService = new WxMpServiceImpl0(); | |||||
wxMpService = new WxMpServiceImpl(); | |||||
wxMpService.setWxMpConfigStorage(config); | wxMpService.setWxMpConfigStorage(config); | ||||
WxMpMessageHandler logHandler = new DemoLogHandler(); | WxMpMessageHandler logHandler = new DemoLogHandler(); | ||||