Java+WeChat 공개 계정 개발 프로세스 2단계에 대한 자세한 설명
이전 기사에서는 Java 언어로 WeChat 공개 플랫폼을 개발하는 첫 번째 부분을 요약했습니다. - 환경 구축 및 개발 액세스, 이 기사에서는 메시지 수신 및 응답을 요약합니다.
WeChat 공개 플랫폼에 연결하면 WeChat은 확인 방법으로 Get 요청을 보냅니다. 그런 다음 메시지를 받으면 WeChat에서 Post 요청을 보내고 XML 형식으로 데이터를 보내고 받습니다.
WeChat에서 보낸 일반 문자 메시지의 XML 패키지 구조를 살펴보세요.
;
공식 문서 설명:
이해한 후 코드 입력을 시작하세요:
1.
수신된 XML 형식을 다음으로 변환합니다. 컬렉션 개체(Map)Util 패키지 아래에 새 MessageUtil 도구 클래스를 만듭니다.
Convert 수신된 XML 형식을 Map 형식으로 변환하려면 dom4j라는 jar 패키지가 필요합니다. 그리고 이를 Web-INF 아래의 lib 패키지에 배치합니다. 필요한 모든 jar 패키지는 기사 마지막 부분에 배치하겠습니다. dom4j jar 패키지의 도움으로 XML 형식을 Map 객체 형식으로 변환하는 메서드를 작성할 수 있습니다. 이 메서드는 다음과 같이 구현됩니다.
/** * 新建方法,将接收到的XML格式,转化为Map对象 * @param request 将request对象,通过参数传入 * @return 返回转换后的Map对象 */ public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException{ Map<String, String> map = new HashMap<String, String>(); //从dom4j的jar包中,拿到SAXReader对象。 SAXReader reader = new SAXReader(); InputStream is = request.getInputStream();//从request中,获取输入流 Document doc = reader.read(is);//从reader对象中,读取输入流 Element root = doc.getRootElement();//获取XML文档的根元素 List<Element> list = root.elements();//获得根元素下的所有子节点 for (Element e : list) { map.put(e.getName(), e.getText());//遍历list对象,并将结果保存到集合中 } is.close(); return map; }
2,
위 메서드와 유사하게 메서드를 작성해야 합니다. 메시지 객체를 XML로 변환합니다.여기서는 여전히 jar 패키지인 xstream.jar을 사용해야 합니다. 가져오기 방법은 dom4j와 동일합니다. (또 한 가지 주의할 점은 이전에 가져온 xstream이 1.4 버전이었는데 응답 메시지에 항상 내용이 부족해서 여러 번 시도한 끝에 jar 패키지 버전을 1.3으로 변경했더니 응답 메시지가 성공했다는 점을 설명하고 싶습니다. 구체적인 이유는 일시적으로 알 수 없습니다. 시간 낭비를 피하기 위해 나중에 배울 사람들에게 이 함정을 알려주십시오.)
물론, 먼저 엔터티에 메시지 객체를 전달하기 위한 새로운 엔터티 클래스 TextMessage를 만들어야 합니다. 클래스는 WeChat에서 보낸 6개의 매개변수에 해당하며 해당 Get/Set 메소드와 빈 매개변수/전체 매개변수 구성을 제공합니다. 이에 대해서는 여기서 자세히 설명하지 않습니다.
private String ToUserName;//开发者微信号 private String FromUserName;//发送方账号 private Long CreateTime;//消息创建时间 private String MsgType;//消息类型 private String Content;//文本消息内容 private String MsgId;//消息id,64位整型
다음으로 변환하는 메소드를 작성합니다. 이 문자 메시지 클래스의 객체를 XML 형식으로 반환합니다.
/** * 将文本消息对象转化成XML格式 * @param message 文本消息对象 * @return 返回转换后的XML格式 */ public static String textMessageToXml(TextMessage message){ XStream xs = new XStream(); //由于转换后xml根节点默认为class类,需转化为<xml> xs.alias("xml", message.getClass()); return xs.toXML(message); }
3.
위의 두 가지 처리 방법을 작성한 후 [메시지 수신 및 응답]을 구현해 보겠습니다.원래 서블릿으로 돌아가서 doPost 방법을 작성합니다. :
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); try { //将request请求,传到Message工具类的转换方法中,返回接收到的Map对象 Map<String, String> map = MessageUtil.xmlToMap(request); //从集合中,获取XML各个节点的内容 String ToUserName = map.get("ToUserName"); String FromUserName = map.get("FromUserName"); String CreateTime = map.get("CreateTime"); String MsgType = map.get("MsgType"); String Content = map.get("Content"); String MsgId = map.get("MsgId"); if(MsgType.equals("text")){//判断消息类型是否是文本消息(text) TextMessage message = new TextMessage(); //原来【接收消息用户】变为回复时【发送消息用户】 message.setFromUserName(ToUserName); message.setToUserName(FromUserName); message.setMsgType("text"); message.setCreateTime(new Date().getTime());//创建当前时间为消息时间 message.setContent("您好,"+FromUserName+"\n我是:"+ToUserName +"\n您发送的消息类型为:"+MsgType+"\n您发送的时间为"+CreateTime +"\n我回复的时间为:"+message.getCreateTime()+"\n您发送的内容是:"+Content); //调用Message工具类,将对象转为XML字符串 str = MessageUtil.textMessageToXml(message); System.out.println(str); out.print(str); } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.close(); } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.close(); } }
이렇게 해서 문자 수신 및 응답이 성공적으로 완료되었습니다.
프로젝트에 필요한 Jar 패키지:
링크: https://pan.baidu.com/s/1n7WXoDXN97AwQPjgiyz5gw 비밀번호: m5ne
관련 권장 사항:
WeChat 공개 개발을 위한 Java 그래픽 코드 예 플랫폼 WeChat 공개 계정 결제 개발(자바) 사례에 대한 자세한 설명위 내용은 Java+WeChat 공개 계정 개발 프로세스 2단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

데이터베이스 쿼리에 tkmyBatis를 사용하는 경우 쿼리 조건을 구축하기 위해 엔티티 클래스 변수 이름을 우아하게 가져 오는 방법이 일반적인 문제입니다. 이 기사는 고정 될 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
