O artigo anterior fala sobre como acessar a conta oficial do WeChat. Este artigo fala sobre as funções mais básicas da conta oficial do WeChat: a recepção e a resposta a mensagens comuns. Falando em mensagens comuns, quais são as mensagens comuns definidas pelas contas oficiais do WeChat? As mensagens comuns recebidas mencionadas na documentação do desenvolvedor do WeChat incluem as seguintes categorias :
1. Mensagem de texto
2. Mensagem da imagem
3. Mensagem de voz
4. mensagem de vídeo
5. mensagem de vídeo curta
6. Mensagem de localização geográfica
7. Mensagem de link (mensagem de resposta passiva)
Mensagens regulares que respondem passivamente incluem:
1. Responda às mensagens de texto
2. Responda à mensagem da imagem
3. Responda às mensagens de voz
4. Responda às mensagens de vídeo
5. Responder às mensagens de música
6. Responder às mensagens de texto
De fato, as duas ações de receber mensagens e mensagens de resposta passivas são inseparáveis. Este é um cenário interativo. De um modo geral, a conta oficial fornecerá respostas correspondentes analisando as mensagens recebidas. Obviamente, algumas empresas especiais não podem ser descartadas.
Como receber mensagens
O formato XML das mensagens a ser recebido nas 7 mensagens não será listado aqui. Vá ao documento oficial para visualizá -los, com definições específicas de formato e descrições de atributos. O formato é muito simples. Os atributos comuns básicos incluem TouserName, FromUsername, CreateTime, Msgtype e MSGID, e cada tipo tem seus próprios atributos especiais.
Depois de ver isso, eu realmente entendo que o processo de recebimento de mensagens é realmente o processo de obtenção do XML solicitado pela postagem e depois analisar o XML. A entrada para solicitação de postagem ainda é o endereço para acesso à conta oficial do WeChat mencionada anteriormente. Todas as solicitações para toda a conta oficial serão destinadas a esta entrada, mas é uma solicitação GET ao acessar e, em outros casos, é uma solicitação de postagem. DOM4J é usado para processar XML. O código de processamento XML é o seguinte. Você pode chamar o método parsexml no método post do servlet:
mapa estático público parsexml (httpservletRequest request) lança exceção {// armazenar o resultado analisado no hashmap map = new hashmap (); // obtenha o fluxo de entrada do solicitação de entrada do solicitação de entrada. Exceção aninhada:* final prematuro do arquivo string requestbody =* inputStream2String (inputStream); System.out.println (requestbody);*/// Leia o fluxo de entrada SAXReader Reader = new SAXReader (); documento document = reader.read.read (inputStream); // obtenha o elemento raiz xml ROOT = Document.GeTrootElement (); // obtendo todos os nós da criança/list element> elemento <element> rootList = elementList) map.put (e.getName (), e.getText ()); // Libere o recurso inputStream.close (); inputStream = null; retorna mapa;} private static string inputStream2String (inputStream is) lança IoException (byteArArATPTURATRAY; ! = -1) {baos.write (i);} retorna baos.toString ();} Como responder passivamente às mensagens
Abaixo, demonstro a mensagem construindo uma resposta com base nessa lógica, recebendo a mensagem de texto "texto" e respondendo à mensagem de texto; receber a "imagem" e responder à mensagem da imagem; receber a "voz" e responder à mensagem de voz; recebendo o "vídeo", respondendo à mensagem de vídeo; recebendo a "música", respondendo à mensagem da música; recebendo a "imagem" e respondendo à mensagem da imagem.
Responder às mensagens de texto como uma explicação:
<XML> <TouserName> <! [CDATA [A pessoa que envia a mensagem, isto é, o assinante]]> </tousername> </fromusername> <! [CDATA [relato oficial do WeChat]]> </oxemusename> <createTime> tempo de criação de mensagens (plástico Plastic Cirurgia) </seletETime> <mgtype> <! [CDATA [text]]> </sgtype> <Content> <! [CDATA [conteúdo da mensagem]]> </content> </xml>
Os dois primeiros atributos podem ser obtidos da mensagem recebida, e o formato de mensagem recebido é o seguinte:
<XML> <TouserName> <! [CDATA [Touser]]> </tousername> <nomusername> <! [CDATA [FromUser]]> </usevername> <reateTime> 1348831860 </CreateTime> <sgtype> <! [CDATA] Texto]]> </acest> <msgid> 1234567890123456 </msgid> </xml>
O nome TouserNe no formato de mensagem de recebimento é o nome do nome que responde à mensagem, e o nome do usern name no formato de mensagem de recebimento é o nome touserr que responde à mensagem.
CreateTime é o registro de data e hora enviado pela mensagem. Msgtype é o tipo de mensagem e o texto é texto. Conteúdo é o conteúdo da mensagem.
A resposta a cada tipo de mensagem é construir o conteúdo do formato XML desse tipo. Os formatos são semelhantes, mas os formatos de música, vídeo, voz e gráfico são um pouco mais complicados do que o conteúdo XML construído por mensagens de texto. Para detalhes, consulte a documentação oficial. Não vou entrar em detalhes aqui, acredito que você vai entender isso rapidamente.