Как подключиться к серверу с API разработки WeChat, давайте представим его ниже
1. Объяснение
* Этот пример разработан и продемонстрирован в соответствии с документом по разработке WeChat: http://mp.weixin.qq.com/wiki/home/index.html Последняя версия (4/3/2016 5:34:36).
* Редактирование платформы: myeclipse10.7+win32+jdk1.7+tomcat7.0
* Сервер: Alibaba Cloud Windows Server 2008 64bits
* Требования к платформе: метод аннотации использования сервлета, Требования к платформе: J2EE6.0+, JDK6.0+, Tomcat7.0+
* Демо фокусируется больше на анализе API.
* Для инструкций по тестированию каждый тестовый пример является независимым и не зависит от других методов. Не рассматривайте упаковку.
* Демонстрация проводится как можно больше в соответствии с требованиями API. Цель: Понять, как используется документ, и достичь влияния обучения из одного примера и применения его к другим.
* Требования к знаниям: солидный фонд Java, понимание знаний о коммуникации HTTP, достаточно понимания Javaweb, JSON Analysis
* Текущее время: 4/3/2016 5:32:57, на этот раз преобладает.
2. Оригинальный документ (Аннотация)
Адрес документа: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Чтобы получить доступ к разработке общественной платформы WeChat, разработчики должны выполнить следующие шаги:
1. Заполните конфигурацию сервера
2. Проверьте обоснованность адреса сервера
3. Внедрение бизнес -логики на основе интерфейсных документов
3. Документ Понимание
Проверьте обоснованность адреса сервера
1. API представлен так:
После того, как разработчик представляет информацию, сервер WeChat отправит запрос GET на URL-адрес адреса заполненного сервера. Запрос GET содержит четыре параметра: подпись, временная метка, nonce, echostr
Разработчик проверяет запрос, проверяя подпись (ниже метод проверки).
Если вы подтвердите, что запрос GET поступает с сервера WeChat, пожалуйста, верните содержимое параметров EchoStr в таком случае, и доступ вступает в силу и успешно становится разработчиком. В противном случае доступ не удается.
Процесс шифрования/проверки выглядит следующим образом:
1) Сортировка словаря порядок токена, временной метки и нонсе
2) Сплайсировать три строки параметров в одну строку для шифрования SHA1
3) Строки, полученные разработчиком, можно сравнить с подписью для определения запроса, происходящего из WeChat.
2. Понять
Это означает, что запрос находится в режиме «получить», а доступ к запросу вернет четыре параметра: подпись, временная метка, новая, echostr.
Нам нужно принять эти параметры, а затем обработать их. Если проверка успешна, полученный «эхостст» возвращается, в противном случае проверка не удается.
Метод проверки состоит в том, чтобы сортировать принятые три токена параметра, временные метки и нонс, а затем шифрование SHA1 и, наконец, сравнить его с подписью.
*Зашифрованная строка можно сравнить с подписью. Если это равно [API может не объяснить его очень четко], вернуть «EchoStr» и успешно подтвердить его.
3. осознавать
Создайте сервенс -coreservlet для реализации httpservlet и перегрузить метод Doget.
Подготовка параметров
// Установите глобальный токен, разработчик устанавливает его сам. API объясняет этот путь: токен может быть заполнен разработчиком по желанию, // используется в качестве сигнатуры генерации (токен будет сравниваться с токеном, содержащимся в URL интерфейса для проверки безопасности) 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
// Шаг 1: Сортировка Словаря Порядок токена, временной метки, nonce string [] parms = new String [] {token, timeStamp, nonce}; // Поместите строки, которые необходимо сортировать словарь в массив. шифрование [Baidu: Java SHA1 шифрование] // Сплайс строковой строки parmsstring = ""; // Обратите внимание, что он не может = нулевой здесь. Для (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i];} // sha1 incryption string mparms = null; // Результат после шифрования ... // Это место является реализацией шифрования Sha1, не является код MPArms = HexString.toString (); Запрос Get поступает с сервера WeChat, пожалуйста, верните содержимое параметров EchoStr, как он есть, и доступ вступает в силу и становится разработчиком успешно, в противном случае доступ не работает. */// Шаг 3: Разработчик получает зашифрованную строку и может сравнить ее с подписью, чтобы определить, что запрос происходит от успешного доступа WeChat. System.out.println (Tag + ":" + mparms + "--->" + signature); if (mparms.equals (signature)) {// system.out.println (Tag + ":" + mparms + "---->" + signature); printwriter.write (echoStr);} else {// access не удастся, не нужно записать обратно // System.out.println (Tag + "Access Faile");}4. Заполните конфигурацию сервера
1) включение конфигурации сервера контента - это в основном интерфейс сервера и доступа WeChat, который нам необходим для настройки после того, как мы пишем наш собственный код для доступа к платформе разработки WeChat.
2) Операция сервера Откройте Tomcat сервера и поместите письменный код в файл WebApps.
3) Операция общедоступной платформы WeChat
*Подайте заявку на тестовую учетную запись WeChat (сканируйте непосредственно с WeChat для входа в систему): http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
*Откройте тестовый номер общедоступной платформы WeChat и настройте информацию о конфигурации интерфейса. Конфигурация следующая
URL: http: // ip/weixinapidemo/coreservlet
Токен: wgyscsf
*При отправке напомнится, успех на конфигурации и сбой.
Все исходные коды операции в этой части могут быть использованы напрямую
пакет com.gist.servlet; импорт java.io.ioexception; импорт java.io.printwriter; импорт java.security.messagedigest; импорт java.security.nosuchalgorithmexception; импорт java.util.arrays; импорт javax.servletexception; javax.servlet.http.httpservlet; импорт javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse;/*** @author gao yuan </n> электронная почта: [email protected] </n> blog. http://blog.csdn.net/wgyscsf </n>> * Период написания 2016-4-3 4:34:05 PM */@webservlet ("/coreservlet") открытый класс Coreservlet расширяет httpservlet {String Tag = "coreservlet"; / * * Шаг 2: Проверьте обоснованность адреса сервера После того, как разработчик представляет информацию, сервер WeChat отправит запрос GET на URL-адрес адресу заполненного сервера. * Запрос GET содержит четыре параметра: подпись, временная метка, nonce, echoStr * Разработчик проверяет запрос путем проверки подписи (ниже метод проверки). Если вы подтвердите, что запрос GET поступает с сервера WeChat, пожалуйста, верните содержимое параметра EchoStr, как это, *, доступ вступает в силу и успешно становится разработчиком, в противном случае доступ не работает. * * Процесс шифрования/проверки выглядит следующим образом: 1. Сортировка Словаря Ордена токена, временной метки и Nonce 2. * Сплайсировать три строки параметров в строку для шифрования SHA1 3. Строки после разработчика получает зашифрованные строки, можно сравнить с сортировкой) сортирующим порой */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * переменные для формирования последовательностей. Метод состоит в том, чтобы сформировать последовательность от малого до крупного в алфавитном порядке или в порядке малых и больших чисел. */ @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 (); // Установите глобальный токен, разработчик устанавливает его сам. API объясняет это: токен может быть заполнен по желанию разработчиком, // используется в качестве сигнатуры генерации (токен будет сравниваться с токеном, содержащимся в URL интерфейса для проверки безопасности) 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. Есть три шага в общей сложности // Шаг 1: Сортировка Словаря «Порядок токена», «Времена», «Нез» три параметра String [] parms = new String [] {token, timestamp, nonce}; // Поместите строки, которые необходимо сортировать словарь в массив Splice Splice. Строки для Shrams1 Sprestres1 Строки Splice. шифрование // Сплайс строковой строки parmsstring = ""; // Обратите внимание, что он не может = null здесь. for (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i]; } // SHA1 Шифрование строки mparms = null; // зашифрованный результат MessageDigest Digest = null; try {digest = java.security.messagedigest.getInstance ("sha"); } catch (nosuchalgorithmexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } digest.update (parmsstring.getbytes ()); Byte MessageDigest [] = digest.digest (); // Создать шестигранную строку stringbuffer hexstring = new StringBuffer (); // преобразовать байтовые массивы в шестнадцатеричный номер для (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 (); // Результат шифрования/ * * * * В противном случае доступ потерпит неудачу. */ // Шаг 3: Разработчик получает зашифрованную строку и может сравнить ее с подписью, чтобы определить, что запрос происходит от успешного доступа WeChat. System.out.println (Tag + ":" + mparms + "--->" + signature); if (mparms.equals (signature)) {// system.out.println (Tag + ":" + mparms + "---->" + signature); printwriter.write (echostr); } else {// access не удастся, не нужно записывать обратно // System.out.println (Tag + "Access Faile"); }} @Override Protected void Dopost (httpservletRequest req, httpservletresponse resp) бросает ServletException, ioException {Doget (req, resp); }}
Первая статья Java WeChat Development API представлена вам здесь. Я надеюсь, что вы будете продолжать обращать внимание на обновленный контент в будущем. Спасибо!