java WeChat開発API第一歩サーバアクセス
6548 ワード
Iサーバーへのアクセス方法を紹介します。
説明する
*この例はWeChatに従って文書を開発します。http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM)で開発デモンストレーションを行います。*編集プラットフォーム:myeclipse 10.7+win 32+jdk 1.7+tomcat 7.0 * サーバー:アリ雲windows server 2008 64 bits*プラットフォームの要求:servletは注釈方式を使用して、プラットフォームの要求:j 2 ee 6.0+、jdk 6.0+、tomcat 7.0+*デモはよりapi解析に重点を置いています。*テストの説明を簡単にするために、各テストケースは独立しており、他の方法に依存しない。パッケージについてはあまり考慮しない。*デモはできるだけAPIの要求に従って行います。目的は文書の使い方を理解して、一挙両得の効果を達成することです。知識の要求:強固なjava基礎、httpネットワーク通信の知識を理解し、java webに対して十分な理解があり、json解析*現在時間:4/3/2016 5:32:57 PM、この時間を基準とします。
二、文書の原文(要約)
文書の住所:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html WeChat公衆プラットフォームにアクセスして開発するには、開発者は以下の手順で完成する必要があります。
1、サーバの配置2を記入し、サーバの住所の有効性を検証する。 3、インターフェースドキュメントによる業務ロジックの実現
三、文書理解
サーバのアドレスの有効性を検証します。
1、アプリはこう紹介します。
開発者が情報を提出すると、WeChatサーバはGET要求を記入されたサーバアドレスURLに送ります。GETは4つのパラメータを要求します。signature、timestamp、nonce、echostr開発者はsignatureを検査して要求を検証します。今回のGET要求がWeChatサーバから来たことを確認したら、そのままechostrパラメータの内容に戻ってください。アクセスが有効になり、開発者の成功になります。さもなければ、アクセスが失敗します。暗号化/検証の流れは以下の通りです。1)token、timestamp、nonceの3つのパラメータを辞書順に並べ替えます。2)、3つのパラメータ文字列を一つの文字列につづり合わせてshar 1を暗号化します。
2、理解する
この要求は「GET」方式であり、アクセス要求は4つのパラメータを返します。signature、timestamp、nonce、echostr。これらのパラメータを受け入れて処理する必要があります。検証が成功すれば、受信した「echostr」に戻ります。そうでなければ、認証に失敗します。検証方式は、受け取ったtoken、timestamp、nonceの3つのパラメータを辞書順に並べてshar 1暗号化し、最後にsignatureと比較します。暗号化された文字列は、signatureと比較することができ、等しい場合は、「ここのappiは、解釈がよくわからないかもしれない」として、「echostr」に戻り、検証に成功しました。
3、実現する
一つのservlet CoreServletを作成して、HttpServletを実現して、doGet方法を再ロードします。
4、サーバの配置を記入する
1)コンテンツサーバの構成を含むのは、主に、自分のアクセスマイクロクレジット開発プラットフォームのコードを作成した後に配置するサーバとWeChatアクセスインターフェースです。2)サーバの操作でサーバーのtomcatを開き、作成したコードをwebappsファイルの下に置く。3)、WeChat公衆プラットフォームの操作*WeChatテストアカウントを申請する(直接WeChatでスキャンすれば登録できます):http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login *WeChat公衆プラットフォームのテスト番号を開き、インターフェースの設定情報を配置する。以下のように設定します URL:https://sms.reyo.cn/Weixin/CoreServlet Token:reyo*は提出して、配置の成功と失敗はいずれも注意があります。
説明する
*この例はWeChatに従って文書を開発します。http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM)で開発デモンストレーションを行います。*編集プラットフォーム:myeclipse 10.7+win 32+jdk 1.7+tomcat 7.0 * サーバー:アリ雲windows server 2008 64 bits*プラットフォームの要求:servletは注釈方式を使用して、プラットフォームの要求:j 2 ee 6.0+、jdk 6.0+、tomcat 7.0+*デモはよりapi解析に重点を置いています。*テストの説明を簡単にするために、各テストケースは独立しており、他の方法に依存しない。パッケージについてはあまり考慮しない。*デモはできるだけAPIの要求に従って行います。目的は文書の使い方を理解して、一挙両得の効果を達成することです。知識の要求:強固なjava基礎、httpネットワーク通信の知識を理解し、java webに対して十分な理解があり、json解析*現在時間:4/3/2016 5:32:57 PM、この時間を基準とします。
二、文書の原文(要約)
文書の住所:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html WeChat公衆プラットフォームにアクセスして開発するには、開発者は以下の手順で完成する必要があります。
1、サーバの配置2を記入し、サーバの住所の有効性を検証する。 3、インターフェースドキュメントによる業務ロジックの実現
三、文書理解
サーバのアドレスの有効性を検証します。
1、アプリはこう紹介します。
開発者が情報を提出すると、WeChatサーバはGET要求を記入されたサーバアドレスURLに送ります。GETは4つのパラメータを要求します。signature、timestamp、nonce、echostr開発者はsignatureを検査して要求を検証します。今回のGET要求がWeChatサーバから来たことを確認したら、そのままechostrパラメータの内容に戻ってください。アクセスが有効になり、開発者の成功になります。さもなければ、アクセスが失敗します。暗号化/検証の流れは以下の通りです。1)token、timestamp、nonceの3つのパラメータを辞書順に並べ替えます。2)、3つのパラメータ文字列を一つの文字列につづり合わせてshar 1を暗号化します。
2、理解する
この要求は「GET」方式であり、アクセス要求は4つのパラメータを返します。signature、timestamp、nonce、echostr。これらのパラメータを受け入れて処理する必要があります。検証が成功すれば、受信した「echostr」に戻ります。そうでなければ、認証に失敗します。検証方式は、受け取ったtoken、timestamp、nonceの3つのパラメータを辞書順に並べてshar 1暗号化し、最後にsignatureと比較します。暗号化された文字列は、signatureと比較することができ、等しい場合は、「ここのappiは、解釈がよくわからないかもしれない」として、「echostr」に戻り、検証に成功しました。
3、実現する
一つのservlet CoreServletを作成して、HttpServletを実現して、doGet方法を再ロードします。
package reyo.sdk.utils.weixin;
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;
@WebServlet("/CoreServlet")
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = -7002640712248365625L;
String TAG = "CoreServlet";
/*
* 1)、 。 2)、
* tomcat, webapps 。 3)、
* ( ):http:/
* /mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
* , 。 URL:http://ip/WeixinApiDemo/CoreServlet
* Token:wgyscsf , 。 :
* , 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 = "reyo";
// 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:" + echostr);
} else {
// ,
System.out.println(TAG + " ");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
4、サーバの配置を記入する
1)コンテンツサーバの構成を含むのは、主に、自分のアクセスマイクロクレジット開発プラットフォームのコードを作成した後に配置するサーバとWeChatアクセスインターフェースです。2)サーバの操作でサーバーのtomcatを開き、作成したコードをwebappsファイルの下に置く。3)、WeChat公衆プラットフォームの操作*WeChatテストアカウントを申請する(直接WeChatでスキャンすれば登録できます):http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login *WeChat公衆プラットフォームのテスト番号を開き、インターフェースの設定情報を配置する。以下のように設定します URL:https://sms.reyo.cn/Weixin/CoreServlet Token:reyo*は提出して、配置の成功と失敗はいずれも注意があります。