>  기사  >  위챗 애플릿  >  Java를 사용하여 일반 메시지를 수신하고 수동적으로 응답하는 WeChat 공개 계정을 개발하는 방법에 대한 자세한 소개

Java를 사용하여 일반 메시지를 수신하고 수동적으로 응답하는 WeChat 공개 계정을 개발하는 방법에 대한 자세한 소개

高洛峰
高洛峰원래의
2017-03-15 17:56:342290검색

이 기사에서는 일반적인 메시지를 수신하고 수동적으로 응답하기 위한 WeChat 공개 계정의 Java 개발에 대한 관련 정보를 주로 소개합니다. 도움이 필요한 친구는 이를 참조할 수 있습니다.

이전 기사를 마친 후 WeChat 공개에 액세스하는 방법 이 기사에서는 WeChat 공식 계정의 가장 기본적인 기능인 일반 메시지 수신 및 회신에 대해 설명합니다. 일반 메시지에 대해 말하자면, WeChat 공식 계정에서 정의하는 일반 메시지는 무엇입니까? WeChat 개발자 문서에 언급된 대로 수신되는 일반 메시지에는 다음 범주가 포함됩니다. :

1. 문자 메시지
2.사진메시지
3. 음성 메시지
4.동영상5. 작은 영상 메시지
6. >7. 링크 메시지(수동적 응답 메시지)


수동적 응답이 포함된 일반 메시지는 다음과 같습니다.


답글 문자 메시지

2. . 사진 메시지 답장

3. 음성 메시지 답장
4. 영상 메시지 답장
5. 음악 메시지 답장
6. 그래픽 메시지 답장


실제로

메시지 수신

과 수동적 응답이라는 두 가지 동작은 분리될 수 없습니다. 이는 원래 상호작용적인 장면입니다. 일반적으로 공개 계정은 수신된 메시지를 분석하여 이에 상응하는 응답을 제공합니다. 물론 일부 특수사업도 배제할 수는 없다.

메시지 수신 방법


수신할 메시지 7개의

xml

형식은 여기에 나와 있지 않습니다. 특정 형식 정의와 속성 설명은 공식 문서를 확인하세요. 형식은 매우 간단합니다. 기본 공통 속성에는 ToUserName, FromUserName, CreateTime, MsgType 및 MsgId가 포함되며 각 유형에는 고유한 특수 속성이 있습니다.
이것을 보면 사실 매우 명확합니다. 메시지를 받는 과정은 실제로

포스트 요청

의 xml을 얻은 다음 xml을 분석하는 과정입니다. 게시물 요청 입구는 앞서 언급한 위챗 공식 계정에서 사용하는 주소 그대로입니다. 공식 계정 전체에 대한 요청은 모두 이 입구를 거치게 되지만, 접속 시 get 요청이 되고 기타 경우에는 게시물 요청입니다. xml 처리 코드는 다음과 같습니다. servlet의 post 메소드에서 parsXml 메소드를 호출하면 됩니다.

public static Map parseXml(HttpServletRequest request) throws Exception {
// 将解析结果存储在HashMap中
Map map = new HashMap();
// 从request中取得输入流
InputStream inputStream = request.getInputStream();
/*
* 读取request的body内容 此方法会导致流读取问题 Premature end of file. Nested exception:
* Premature end of file String requestBody =
* inputStream2String(inputStream); System.out.println(requestBody);
*/
// 读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList)
map.put(e.getName(), e.getText());
// 释放资源
inputStream.close();
inputStream = null;
return map;
}
private static String inputStream2String(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
return baos.toString();
}

수동적 응답 메시지

아래에서는 "text" 문자 메시지를 수신하면 해당 문자 메시지에 응답하는 논리를 기반으로 응답 메시지를 구성하는 방법을 보여 드리겠습니다. "사진"을 받으면 사진 메시지에 답하고, "음성"을 받으면 음성 메시지에 답하고, "음악"을 받으면 영상 메시지에 답합니다. ; "이미지와 텍스트"가 수신되면 이미지와 텍스트 메시지가 응답됩니다.

답장 문자 메시지를 예로 들어 보겠습니다.

<xml>
<ToUserName><![CDATA[发消息的人,即订阅者]]></ToUserName>
<FromUserName><![CDATA[微信公众号本身]]></FromUserName>
<CreateTime>消息创建时间(整形)</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[消息内容]]></Content>
</xml>

처음 두 속성은 수신된 메시지 형식에서 얻을 수 있습니다.


<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a text]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>

수신 메시지 형식의 ToUserName은 응답 메시지의 FromUserName이고, 수신 메시지 형식의 FromUserName은 다음의 ToUserName입니다. 답장 메시지.

CreateTime은 전송된 메시지의
타임스탬프

입니다. MsgType은 메시지 유형이고 텍스트는 텍스트입니다. 내용은 메시지 내용입니다.

각 유형의 메시지에 대한 응답은 이러한 유형의 xml 형식 콘텐츠를 구성하는 것입니다. 형식은 유사하지만 음악, 비디오, 음성 및 그래픽 형식이 xml 콘텐츠와 약간 다릅니다. 문자 메시지로 구성됩니다. 자세한 내용은 공식 문서를 참조하세요. 여기서는 자세히 설명하지 않겠습니다. 여러분은 한 눈에 이해하실 것이라고 믿습니다.

위 내용은 Java를 사용하여 일반 메시지를 수신하고 수동적으로 응답하는 WeChat 공개 계정을 개발하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.