ホームページ >WeChat アプレット >WeChatの開発 >WeChatが開発したWeChat jsapiとjavaの事前アクセス方法を詳しく解説
パラメータ名
http://www.php.cn/wiki/835.html" target="_blank">width="346" valign="top" style="word-break:break- all"> | 説明 |
appId | アプリIDは、WeChatパブリックアカウント管理プラットフォームにログインすることで照会できます |
タイムスタンプ | 署名付きタイムスタンプ | を生成するために必要です
nonceStr | 必須、ランダムな署名文字列を生成します |
signature | 必須、署名、付録 1 を参照 |
上記 form のパラメータについては、前の章ですでに明らかにしました、なぜフォームを作成するのかというと、WeChat jsapi に正常にアクセスしたい場合、これら 4 つのパラメータは資格情報であり、開くために 4 つの鍵が必要なドアに相当します。 。
以下の例では、Javaのサーブレットを使用してジャンプページを作成しています。 SpringMVCは使用されません。 リクエストされたパスをコントローラーのパスに変更できます。
WxJsAPIサーブレットコード:
package com.test; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.test.util.JsapiTicketUtil; import com.test.util .Sign; public class WxJsAPIServlet extends HttpServlet { /** * オブジェクトのコンストラクター */ public WxJsAPIServlet() { super(); } /** * サーブレットの破棄。 */ public void destroy() { super.destroy(); // ログに「destroy」 文字列を入れるだけです // ここにコードを入れてください } /** * サーブレットの doGet メソッド。 * * このメソッドは、フォームのタグ値メソッドが get と等しい場合に呼び出されます。 * * @param request cli によって送信されるリクエストサーバーに送信します * @param レスポンスサーバーからクライアントに送信される応答 * @throws ServletException if エラーが発生した場合 * @throws IOException エラーが発生した場合 */ public void doGet(HttpServletRequest request, Ht tpServletResponse 応答) ServletException をスローします。 IOException { System.out.println("wxJSAPI====================="); String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();; M該当(&L) ;文字列,文字列> map = Sign.sign(jsapi_ticket, "http://www.vxzsk.com/weChat/wxJsAPIServlet"); String timestamp = map.get("timestamp"); String nonceStr = map.get("nonceStr "); String signature = map.get("signature"); String appId = "应用Id"; request.setAttribute("appId", appId); request.setAttribute("タイムスタンプ", timestamp); request.setAttribute("signature",signature); request.setAttribute("nonceStr", nonceStr); request.getRequestDispatcher("jsapi/jsapi.jsp")。転送(リクエスト、応答); } /** * サーブレットの doPost メソッド。 * *このメソッドは、フォームにタグ値メソッドがクライアントへの応答に等しいときに呼び出されます。 ; No. 44 の行は、jsapi_ticket を生成するツール クラスのコードを以下に掲載します。 45行目 Signクラスのsignメソッドは、テーブルの最後の3つのパラメータをMapコレクションにカプセル化します。パラメータは要求されたサーブレット アドレスで、WeChat jsapi を呼び出す jsp インターフェイスにジャンプします。 49 行目 アプリケーション ID がわからない場合は、appId を自分のアプリケーション ID に置き換えます WeChatパブリックプラットフォーム管理センターにログインして確認できます。 サーブレットに対応する web. xmlcode < display-name>これは J2EE コンポーネントの表示名です |
package com.test.util; /*** * V 字型知識ベース www.vxzsk.com */ import java.util.UUID; import java.util.Map; import java.util.HashMap; import java.util.Formatter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.io.UnsupportedEncodingException; public class Sign { public static Map Map String nonce_str = create_nonce_str(); String timestamp = create_timestamp(); String string1; 文字列署名 = ""; //注意这里パラメータ名前必須全小写、かつ必須须有序 string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "×tamp=" + timestamp + "&url=" + url; システム.out.println(string1); try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt。 reset(); crypt.update (string1.getBytes("UTF-8")); signature = byteToHex(crypt.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); ret.put("url", url) ; ret.put("jsapi_ticket", jsapi_ticket); ret .put("nonceStr", nonce_str); ret.put("timestamp", timestamp); ret.put("signature", signature); return プライベート 静的String byteToHex( finalbyte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } Re String result = formatter.tostring (); return Id (). Tostring (); return Long.toString() System.CurrentTimeMillis() / 1000);}public static void actionまたはコントローラー アドレスを指定すると、メソッドは jsapi Map for (Map.Entryentry:ret.entrySet()) { を使用して JSP インターフェイスに直接ジャンプします。 System.out.println(entry.getKey() + ", " +entry.getValue()); sapi_ticket パラメータのツールクラス JsapiTicketUtil コード
|