Java + WeChat パブリック アカウント開発プロセスの手順 2 の詳細な説明
前回の記事では Java 言語による WeChat パブリック プラットフォームの開発の最初の部分 - 環境構築と開発アクセスについてまとめましたが、この記事では メッセージの受信と応答についてまとめました。
WeChat パブリック プラットフォームに接続すると、WeChat は検証メソッドに Get リクエストを送信します。その後、メッセージを受信すると、WeChat は投稿リクエストを送信し、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 と同じです。 (もう 1 つの注意点として、以前にインポートした xstream はバージョン 1.4 であり、応答メッセージの内容が常に不足していました。そこで、さまざまな試みの結果、jar パッケージのバージョンを 1.3 に変更したところ、応答メッセージが正常に送信されました。具体的な理由は一時的に不明です。時間を無駄にしないように、後で学ぶ人にこの落とし穴を伝えてください)
もちろん、まず最初に、エンティティ内の 6 つの属性を運ぶ新しいエンティティ クラス TextMessage を作成する必要があります。クラスは WeChat によって送信された XML テキストに対応し、対応する Get/Set メソッドと空のパラメーター/完全なパラメーターの構造を提供します。これについてはここでは詳しく説明しません:
private String ToUserName;//开发者微信号 private String FromUserName;//发送方账号 private Long CreateTime;//消息创建时间 private String MsgType;//消息类型 private String Content;//文本消息内容 private String MsgId;//消息id,64位整型
次に、変換するメソッドを作成します。このテキスト メッセージ クラスのオブジェクトを XML 形式に変換します。 Return:
/** * 将文本消息对象转化成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.
上記 2 つの処理メソッドを記述したら、[メッセージの受信と応答] を実装しましょう。元のサーブレットに戻り、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) の例の詳細な説明以上がJava + WeChat パブリック アカウント開発プロセスの手順 2 の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

名前を数字に変換してグループ内でソートを実装する方法は?ユーザーをグループでソートする場合、ユーザーの名前を数字に変換して、異なる可能性があることがよくあります...

Spring Project Startupにおける円形依存関係のランダム性を理解してください。春のプロジェクトを開発するとき、プロジェクトの起動時に循環依存関係によって引き起こされるランダム性に遭遇する可能性があります...
