package com.weixinapi.handler;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import com.weixinapi.contract.FieldContract;
import com.weixinapi.message.BaseMessage;
import com.weixinapi.message.ImageMessage;
import com.weixinapi.message.LinkMessage;
import com.weixinapi.message.LocationMessage;
import com.weixinapi.message.MessageHead;
import com.weixinapi.message.TextMessage;
import com.weixinapi.message.VideoMeaasge;
import com.weixinapi.message.VoiceMessage;
public abstract class BaseHandler {
private InputStream inputStream;
private OutputStream outputStream;
private static DocumentBuilder documentBuilder;
static{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try{
documentBuilder = factory.newDocumentBuilder();
}
catch (ParserConfigurationException e){
e.printStackTrace();
}
}
public void process(InputStream inputStream, OutputStream outputStream)
{
this.inputStream = inputStream;
this.outputStream=outputStream;
try
{
org.w3c.dom.Document document = documentBuilder.parse(inputStream);
MessageHead messageHead = new MessageHead();
messageHead.read(document);
String type = messageHead.getMsgType();
if (FieldContract.MSG_TYPE_TEXT.equals(type)){
TextMessage msg = new TextMessage(messageHead);
msg.read(document);
onTextMessage(msg);
}
else if (FieldContract.MSG_TYPE_IMAGE.equals(type)){
ImageMessage msg = new ImageMessage(messageHead);
msg.read(document);
onImageMessage(msg);
}
else if (FieldContract.MSG_TYPE_LINK.equals(type)){
LinkMessage msg = new LinkMessage(messageHead);
msg.read(document);
onLinkMessage(msg);
}
else if (FieldContract.MSG_TYPE_LOCATION.equals(type)){
LocationMessage msg = new LocationMessage(messageHead);
msg.read(document);
onLocationMessage(msg);
}
else if (FieldContract.MSG_TYPE_VOICE.equals(type)){
VoiceMessage msg = new VoiceMessage(messageHead);
msg.read(document);
onVoiceMessage(msg);
}
else if (FieldContract.MSG_TYPE_VIDEO.equals(type)){
VideoMeaasge msg = new VideoMeaasge(messageHead);
msg.read(document);
onVideoMeaasge(msg);
}
else{
onErrorMsg(-1);
}
}
catch (SAXException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
public void callback(BaseMessage baseMessage){
Document document = documentBuilder.newDocument();
baseMessage.write(document);
try{
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new OutputStreamWriter(outputStream, "utf-8")));
}
catch (Exception e){
e.printStackTrace();
}
}
public void close(){
try{
if (inputStream != null)
inputStream.close();
if (outputStream != null){
outputStream.flush();
outputStream.close();
}
}
catch (IOException e){
e.printStackTrace();
}
}
public abstract void onTextMessage(TextMessage textMessage);
public abstract void onImageMessage(ImageMessage imageMessage);
public abstract void onLinkMessage(LinkMessage linkMessage);
public abstract void onLocationMessage(LocationMessage locationMessage);
public abstract void onVoiceMessage(VoiceMessage voiceMessage);
public abstract void onVideoMeaasge(VideoMeaasge videoMeaasge);
public abstract void onErrorMsg(int i);
}
没有合适的资源?快使用搜索试试~ 我知道了~
WeiXinAPI.rar_微信 java_微信接口
共39个文件
java:16个
class:16个
mf:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 54 浏览量
2022-09-24
20:22:11
上传
评论
收藏 29KB RAR 举报
温馨提示
提供了对微信接口的封装,提供了对微信接口的封装
资源推荐
资源详情
资源评论
收起资源包目录
WeiXinAPI.rar (39个子文件)
WeiXinAPI
bin
META-INF
MANIFEST.MF 39B
com
weixinapi
handler
DefaultHandler.class 3KB
MessageListener.class 2KB
IMessageListener.class 567B
BaseHandler.class 5KB
sender
DefaultSender.class 2KB
BaseSender.class 3KB
contract
FieldContract.class 3KB
message
MessageHead.class 3KB
LinkMessage.class 2KB
BaseMessage.class 2KB
LocationMessage.class 2KB
VoiceMessage.class 2KB
VideoMeaasge.class 2KB
TextMessage.class 2KB
MessageData.class 1KB
ImageMessage.class 2KB
.settings
org.eclipse.wst.common.project.facet.core.xml 269B
org.eclipse.wst.common.component 232B
org.eclipse.jdt.core.prefs 587B
src
META-INF
MANIFEST.MF 39B
com
weixinapi
handler
MessageListener.java 745B
BaseHandler.java 4KB
IMessageListener.java 771B
DefaultHandler.java 3KB
sender
DefaultSender.java 947B
BaseSender.java 2KB
contract
FieldContract.java 3KB
message
VideoMeaasge.java 2KB
LocationMessage.java 2KB
ImageMessage.java 2KB
MessageData.java 896B
VoiceMessage.java 2KB
MessageHead.java 2KB
LinkMessage.java 1KB
TextMessage.java 1KB
BaseMessage.java 1KB
.project 824B
.classpath 753B
共 39 条
- 1
资源评论
局外狗
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功