🐛 #1087 修复长链接转短链接接口中含有特殊字符导致微信access_token失效的问题

This commit is contained in:
Binary Wang 2019-08-21 14:02:44 +08:00
parent f24495b729
commit db638dd8b1
2 changed files with 17 additions and 4 deletions

View File

@ -145,6 +145,12 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
@Override
public String shortUrl(String longUrl) throws WxErrorException {
if (longUrl.contains("&access_token=")) {
throw new WxErrorException(WxError.builder().errorCode(-1)
.errorMsg("要转换的网址中存在非法字符{&access_token=会导致微信接口报错属于微信bug请调整地址否则不建议使用此方法")
.build());
}
JsonObject o = new JsonObject();
o.addProperty("action", "long2short");
o.addProperty("long_url", longUrl);

View File

@ -6,21 +6,28 @@ import me.chanjar.weixin.mp.api.test.ApiTestModule;
import org.testng.*;
import org.testng.annotations.*;
import static org.assertj.core.api.Assertions.assertThat;
/**
* 测试短连接
*
* @author chanjarster
*/
@Test(groups = "shortURLAPI")
@Test
@Guice(modules = ApiTestModule.class)
public class WxMpShortUrlAPITest {
@Inject
protected WxMpService wxService;
public void testShortUrl() throws WxErrorException {
String shortUrl = this.wxService.shortUrl("www.baidu.com");
Assert.assertNotNull(shortUrl);
String shortUrl = this.wxService.shortUrl("http://www.baidu.com/test?access_token=123");
assertThat(shortUrl).isNotEmpty();
System.out.println(shortUrl);
}
@Test(expectedExceptions = WxErrorException.class)
public void testShortUrl_with_exceptional_url() throws WxErrorException {
this.wxService.shortUrl("http://www.baidu.com/test?redirect_count=1&access_token=123");
}
}