@@ -8,10 +8,7 @@ import me.chanjar.weixin.common.session.WxSession; | |||||
import me.chanjar.weixin.common.session.WxSessionManager; | import me.chanjar.weixin.common.session.WxSessionManager; | ||||
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | ||||
import me.chanjar.weixin.common.util.http.RequestExecutor; | import me.chanjar.weixin.common.util.http.RequestExecutor; | ||||
import me.chanjar.weixin.cp.bean.WxCpDepart; | |||||
import me.chanjar.weixin.cp.bean.WxCpMessage; | |||||
import me.chanjar.weixin.cp.bean.WxCpTag; | |||||
import me.chanjar.weixin.cp.bean.WxCpUser; | |||||
import me.chanjar.weixin.cp.bean.*; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
@@ -141,7 +138,7 @@ public interface WxCpService { | |||||
* | * | ||||
* @param message 要发送的消息对象 | * @param message 要发送的消息对象 | ||||
*/ | */ | ||||
void messageSend(WxCpMessage message) throws WxErrorException; | |||||
WxCpMessageSendResult messageSend(WxCpMessage message) throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -17,10 +17,7 @@ import me.chanjar.weixin.common.util.http.*; | |||||
import me.chanjar.weixin.common.util.json.GsonHelper; | import me.chanjar.weixin.common.util.json.GsonHelper; | ||||
import me.chanjar.weixin.cp.api.WxCpConfigStorage; | import me.chanjar.weixin.cp.api.WxCpConfigStorage; | ||||
import me.chanjar.weixin.cp.api.WxCpService; | import me.chanjar.weixin.cp.api.WxCpService; | ||||
import me.chanjar.weixin.cp.bean.WxCpDepart; | |||||
import me.chanjar.weixin.cp.bean.WxCpMessage; | |||||
import me.chanjar.weixin.cp.bean.WxCpTag; | |||||
import me.chanjar.weixin.cp.bean.WxCpUser; | |||||
import me.chanjar.weixin.cp.bean.*; | |||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
@@ -131,9 +128,9 @@ public abstract class AbstractWxCpServiceImpl<H, P> implements WxCpService, Requ | |||||
} | } | ||||
@Override | @Override | ||||
public void messageSend(WxCpMessage message) throws WxErrorException { | |||||
public WxCpMessageSendResult messageSend(WxCpMessage message) throws WxErrorException { | |||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"; | String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"; | ||||
post(url, message.toJson()); | |||||
return WxCpMessageSendResult.fromJson(this.post(url, message.toJson())); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -0,0 +1,103 @@ | |||||
package me.chanjar.weixin.cp.bean; | |||||
import com.google.common.base.Splitter; | |||||
import com.google.gson.annotations.SerializedName; | |||||
import me.chanjar.weixin.common.util.ToStringUtils; | |||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.util.Collections; | |||||
import java.util.List; | |||||
/** | |||||
* <pre> | |||||
* 消息发送结果对象类 | |||||
* Created by Binary Wang on 2017-6-22. | |||||
* @author <a href="https://github.com/binarywang">Binary Wang</a> | |||||
* </pre> | |||||
*/ | |||||
public class WxCpMessageSendResult { | |||||
@Override | |||||
public String toString() { | |||||
return ToStringUtils.toSimpleString(this); | |||||
} | |||||
public static WxCpMessageSendResult fromJson(String json) { | |||||
return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpMessageSendResult.class); | |||||
} | |||||
@SerializedName("errcode") | |||||
private Integer errCode; | |||||
@SerializedName("errmsg") | |||||
private String errMsg; | |||||
@SerializedName("invaliduser") | |||||
private String invalidUser; | |||||
@SerializedName("invalidparty") | |||||
private String invalidParty; | |||||
@SerializedName("invalidtag") | |||||
private String invalidTag; | |||||
public Integer getErrCode() { | |||||
return this.errCode; | |||||
} | |||||
public void setErrCode(Integer errCode) { | |||||
this.errCode = errCode; | |||||
} | |||||
public String getErrMsg() { | |||||
return this.errMsg; | |||||
} | |||||
public void setErrMsg(String errMsg) { | |||||
this.errMsg = errMsg; | |||||
} | |||||
public String getInvalidUser() { | |||||
return this.invalidUser; | |||||
} | |||||
public void setInvalidUser(String invalidUser) { | |||||
this.invalidUser = invalidUser; | |||||
} | |||||
public String getInvalidParty() { | |||||
return this.invalidParty; | |||||
} | |||||
public void setInvalidParty(String invalidParty) { | |||||
this.invalidParty = invalidParty; | |||||
} | |||||
public String getInvalidTag() { | |||||
return this.invalidTag; | |||||
} | |||||
public void setInvalidTag(String invalidTag) { | |||||
this.invalidTag = invalidTag; | |||||
} | |||||
public List<String> getInvalidUserList() { | |||||
return this.content2List(this.invalidUser); | |||||
} | |||||
private List<String> content2List(String content) { | |||||
if(StringUtils.isBlank(content)){ | |||||
return Collections.emptyList(); | |||||
} | |||||
return Splitter.on("|").splitToList(content); | |||||
} | |||||
public List<String> getInvalidPartyList() { | |||||
return this.content2List(this.invalidParty); | |||||
} | |||||
public List<String> getInvalidTagList() { | |||||
return this.content2List(this.invalidTag); | |||||
} | |||||
} |
@@ -5,38 +5,58 @@ import me.chanjar.weixin.common.api.WxConsts; | |||||
import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; | import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; | ||||
import me.chanjar.weixin.cp.bean.WxCpMessage; | import me.chanjar.weixin.cp.bean.WxCpMessage; | ||||
import org.testng.annotations.Guice; | |||||
import org.testng.annotations.Test; | |||||
import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; | |||||
import org.testng.annotations.*; | |||||
import static org.testng.Assert.*; | |||||
/*** | /*** | ||||
* 测试发送消息 | * 测试发送消息 | ||||
* @author Daniel Qian | * @author Daniel Qian | ||||
* | * | ||||
*/ | */ | ||||
@Test(groups = "customMessageAPI", dependsOnGroups = "baseAPI") | |||||
@Test(groups = "customMessageAPI") | |||||
@Guice(modules = ApiTestModule.class) | @Guice(modules = ApiTestModule.class) | ||||
public class WxCpMessageAPITest { | public class WxCpMessageAPITest { | ||||
@Inject | @Inject | ||||
protected WxCpServiceImpl wxService; | protected WxCpServiceImpl wxService; | ||||
private ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage; | |||||
@BeforeTest | |||||
public void setup() { | |||||
configStorage = (ApiTestModule.WxXmlCpInMemoryConfigStorage) this.wxService.getWxCpConfigStorage(); | |||||
} | |||||
public void testSendCustomMessage() throws WxErrorException { | |||||
ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlCpInMemoryConfigStorage) this.wxService.getWxCpConfigStorage(); | |||||
WxCpMessage message1 = new WxCpMessage(); | |||||
message1.setAgentId(configStorage.getAgentId()); | |||||
message1.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||||
message1.setToUser(configStorage.getUserId()); | |||||
message1.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||||
this.wxService.messageSend(message1); | |||||
public void testSendMessage() throws WxErrorException { | |||||
WxCpMessage message = new WxCpMessage(); | |||||
message.setAgentId(configStorage.getAgentId()); | |||||
message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||||
message.setToUser(configStorage.getUserId()); | |||||
message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||||
WxCpMessage message2 = WxCpMessage | |||||
WxCpMessageSendResult messageSendResult = this.wxService.messageSend(message); | |||||
assertNotNull(messageSendResult); | |||||
System.out.println(messageSendResult); | |||||
System.out.println(messageSendResult.getInvalidPartyList()); | |||||
System.out.println(messageSendResult.getInvalidUserList()); | |||||
System.out.println(messageSendResult.getInvalidTagList()); | |||||
} | |||||
public void testSendMessage1() throws WxErrorException { | |||||
WxCpMessage message = WxCpMessage | |||||
.TEXT() | .TEXT() | ||||
.agentId(configStorage.getAgentId()) | .agentId(configStorage.getAgentId()) | ||||
.toUser(configStorage.getUserId()) | .toUser(configStorage.getUserId()) | ||||
.content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>") | .content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>") | ||||
.build(); | .build(); | ||||
this.wxService.messageSend(message2); | |||||
} | |||||
WxCpMessageSendResult messageSendResult = this.wxService.messageSend(message); | |||||
assertNotNull(messageSendResult); | |||||
System.out.println(messageSendResult); | |||||
System.out.println(messageSendResult.getInvalidPartyList()); | |||||
System.out.println(messageSendResult.getInvalidUserList()); | |||||
System.out.println(messageSendResult.getInvalidTagList()); | |||||
} | |||||
} | } |