Java WeChat 개발 API 서버 접속에 대한 자세한 설명
이 기사에서는 주로 Java WeChat 개발 API 서버 액세스에 대한 자세한 설명을 공유합니다. 관심 있는 친구는 다음과 같이
WeChat 개발 API를 통해 서버에 액세스하는 방법을 참조할 수 있습니다. 소개합니다
1. 설명
* 이 예는 WeChat 개발 문서를 기반으로 합니다: http://mp.weixin .qq. 개발 데모용 com/wiki/home/index.html 최신 버전(2016년 4월 3일 오후 5:34:36)
* 편집 플랫폼: myeclipse10.7+win32+jdk1.7+tomcat7.0
* 서버: Alibaba Cloud windows server 2008 64bits
* 플랫폼 요구 사항 : servlet은 주석 방법을 사용하며 플랫폼 요구 사항은 다음과 같습니다. j2ee6.0+, jdk6.0+, tomcat7.0+
* 데모에서는 API 분석에 더 중점을 둡니다.
* 테스트 설명을 용이하게 하기 위해 각 테스트 사례는 독립적이며 다른 방법에 의존하지 않습니다. 포장에 대해 많이 생각하지 마십시오.
* 시연은 최대한 API 요구사항에 맞춰 진행되어야 하며, 문서의 사용법을 이해하고 하나의 예시를 통해 추론하는 효과를 얻는 것이 목적입니다.
* 지식 요구사항: 탄탄한 Java 기초, http 네트워크 통신 지식, javaweb에 대한 충분한 이해, json파싱
* 현재 시간: 2016년 4월 3일 오후 5시 32분 57초 , 이때를 기준으로 합니다.
2. 원본문서(초록)
문서 주소: http://mp.weixin.qq.com/wiki /8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
개발을 위해 WeChat 공개 플랫폼에 액세스하려면 개발자는 다음 단계를 따라야 합니다.
1. 구성
2. 서버 주소 유효성 확인
3. 인터페이스 문서
를 기반으로 비즈니스 로직 구현 3. 문서 이해
서버 주소 유효성 확인
1. API는 다음과 같이 도입됩니다.
개발자가 정보를 제출한 후 WeChat은 서버는 채워진 서버 주소 URL로 GET 요청을 보냅니다: 서명, timestamp, nonce, echostr
. 서명 확인을 통해 (확인 방법은 아래와 같습니다)
이 GET 요청이 WeChat 서버에서 오는 것으로 확인되면 echostr 매개 변수 내용을 그대로 반환하면 액세스가 적용되고 개발자가 성공적으로 이루어지며, 그렇지 않으면 액세스가 실패합니다.
암호화/검증 과정은 다음과 같습니다.
1) 3개의 매개변수 토큰, 타임스탬프, Nonce를 사전순으로 정렬합니다.
2) 3개의 매개변수 문자열 을 하나로 연결합니다. 문자열 sha1암호화
3) 개발자가 얻은 암호화된 문자열을 서명과 비교하여 해당 요청이 WeChat
2.
은 요청이 "GET" 모드에 있음을 나타내며 요청에 액세스하면 서명, 타임스탬프, nonce 및 echostr의 네 가지 매개변수가 반환된다는 점을 이해합니다.이러한 매개변수를 수락한 다음 처리해야 합니다. 확인이 성공하면 수신된 "echostr"을 반환하고, 그렇지 않으면 확인이 실패합니다.
검증 방법은 수신된 토큰, 타임스탬프, nonce 세 가지 매개변수를 사전순으로 정렬한 후 sha1 암호화를 수행하고 최종적으로 서명과 비교하는 것입니다.
* 암호화된 문자열은 서명과 비교할 수 있습니다. [API가 명확하게 설명되지 않을 수 있음] "echostr"이 반환되고 확인이 성공합니다.
3.
HttpServlet을 구현하기 위해 서블릿 CoreServlet을 생성하고doGet 메서드를 오버로드합니다. 매개변수 준비
// 设置一个全局的token,开发者自己设置。api这样解释:Token可由开发者可以任意填写, // 用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性) String token = "wgyscsf"; // 根据api说明,获取上述四个参数 String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr");
api에 언급된 세 단계를 따르세요
// 第一步:将token、timestamp、nonce三个参数进行字典序排序 String[] parms = new String[] { token, timestamp, nonce };// 将需要字典序排列的字符串放到数组中 Arrays.sort(parms);// 按照api要求进行字典序排序【百度:什么是字典序排序】 // 第二步:将三个参数字符串拼接成一个字符串进行sha1加密【百度:java sha1加密】 // 拼接字符串 String parmsString = "";// 注意,此处不能=null。 for (int i = 0; i < parms.length; i++) { parmsString += parms[i]; } // sha1加密 String mParms = null;// 加密后的结果 ... //该地方是sha1加密的实现,不再贴代码 mParms = hexString.toString();// 加密结果 /* * api要求: 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容, 则接入生效, 成为开发者成功,否则接入失败。 */ // 第三步: 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信接入成功。 System.out.println(TAG + ":" + mParms + "---->" + signature); if (mParms.equals(signature)) { // System.out.println(TAG + ":" + mParms + "---->" + signature); printWriter.write(echostr); } else { // 接入失败,不用回写 // System.out.println(TAG + "接入失败"); }
4. 콘텐츠를 포함하여 서버 구성1)을 입력합니다.
서버 구성은 주로 액세스하기 위해 자체 코드를 작성한 후 구성해야 하는 서버 및 구성입니다. WeChat 개발 플랫폼.2) 서버 동작
서버의 tomcat을 열고 작성된 코드를 webapps 파일 아래에 넣어주세요.
3) 위챗 퍼블릭 플랫폼 운영
* 위챗 테스트 계정 신청(위챗으로 직접 스캔하여 로그인 가능):
http://www.php.cn/
* WeChat 공개 플랫폼 테스트 계정을 개설하고 인터페이스 구성 정보를 구성하세요. 구성은 다음과 같습니다
URL: http://www.php.cn/
Token:wgyscsf*제출하면 성공 알림이 전송됩니다. 그리고 실패한 구성.
该部分所有操作源码,可以直接使用
package com.gist.servlet; import java.io.IOException; import java.io.PrintWriter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 高远</n> 邮箱:wgyscsf@163.com</n> 博客 http://www.php.cn/;/n> * 编写时期 2016-4-3 下午4:34:05 */ @WebServlet("/CoreServlet") public class CoreServlet extends HttpServlet { String TAG = "CoreServlet"; /* * 第二步:验证服务器地址的有效性 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上, * GET请求携带四个参数:signature、timestamp、nonce、echostr * 开发者通过检验signature对请求进行校验(下面有校验方式)。 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容, * 则接入生效, 成为开发者成功,否则接入失败。 * * 加密/校验流程如下: 1. 将token、timestamp、nonce三个参数进行字典序排序 2. * 将三个参数字符串拼接成一个字符串进行sha1加密 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 */ /* * 字典排序(lexicographical * order)是一种对于随机变量形成序列的排序方法。其方法是,按照字母顺序,或者数字小大顺序,由小到大的形成序列。 */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置编码 req.setCharacterEncoding("utf-8"); resp.setContentType("html/text;charset=utf-8"); resp.setCharacterEncoding("utf-8"); // 获取输出流 PrintWriter printWriter = resp.getWriter(); // 设置一个全局的token,开发者自己设置。api这样解释:Token可由开发者可以任意填写, // 用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性) String token = "wgyscsf"; // 根据api说明,获取上述四个参数 String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); // // temp:临时打印,观看返回参数情况 // System.out.println(TAG + ":signature:" + signature + ",timestamp:" // + timestamp + ",nonce:" + nonce + ",echostr:" + echostr); // 根据api所说的“加密/校验流程”进行接入。共计三步 // 第一步:将token、timestamp、nonce三个参数进行字典序排序 String[] parms = new String[] { token, timestamp, nonce };// 将需要字典序排列的字符串放到数组中 Arrays.sort(parms);// 按照api要求进行字典序排序 // 第二步:将三个参数字符串拼接成一个字符串进行sha1加密 // 拼接字符串 String parmsString = "";// 注意,此处不能=null。 for (int i = 0; i < parms.length; i++) { parmsString += parms[i]; } // sha1加密 String mParms = null;// 加密后的结果 MessageDigest digest = null; try { digest = java.security.MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } digest.update(parmsString.getBytes()); byte messageDigest[] = digest.digest(); // Create Hex String StringBuffer hexString = new StringBuffer(); // 字节数组转换为 十六进制 数 for (int i = 0; i < messageDigest.length; i++) { String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); if (shaHex.length() < 2) { hexString.append(0); } hexString.append(shaHex); } mParms = hexString.toString();// 加密结果 /* * api要求: 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容, 则接入生效, 成为开发者成功,否则接入失败。 */ // 第三步: 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信接入成功。 System.out.println(TAG + ":" + mParms + "---->" + signature); if (mParms.equals(signature)) { // System.out.println(TAG + ":" + mParms + "---->" + signature); printWriter.write(echostr); } else { // 接入失败,不用回写 // System.out.println(TAG + "接入失败"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
java微信开发API的第一篇内容就为大家介绍到这里,希望大家继续关注之后的更新内容,谢谢!
위 내용은 Java WeChat 개발 API 서버 접속에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.
