この記事では、WeChatによって開発されたメッセージインターフェースを見てみましょう
WeChat開発とはWeChatインターフェースを呼び出すことだと思うので、仕事の予定がないときに読んで呼び出してみますWeChat インターフェイスを呼び出すには、http get リクエストと post リクエストを送信する必要があるため、最初に get リクエストと post リクエストを送信するための httputil クラスを作成するのが最善です。ただし、私は Java ネットワーク プログラミングが苦手なので、 Baidu のコードをいくつか自分でカプセル化して、正常に使用できるようにします。コードは次のとおりです
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.Iterator; import java.util.Map; import javax.activation.MimetypesFileTypeMap; /** * * @author luolei * */ public class HttpUtil { public static String httpGet(String httpUrl){ StringBuffer buffer = null; try{ URL url = new URL(httpUrl); HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoInput(true); httpUrlConn.setRequestMethod("GET"); // 獲取輸入流 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 讀取返回結(jié)果 buffer = new StringBuffer(); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } // 釋放資源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); httpUrlConn.disconnect(); }catch(Exception e){ e.printStackTrace(); } return buffer.toString(); } /** * * 發(fā) post 請求, */ public static String httpPost(String httpUrl,String data){ PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(httpUrl); // 打開和URL之間的連接 URLConnection conn = realUrl.openConnection(); // 設(shè)置通用的請求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 發(fā)送POST請求必須設(shè)置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); // 獲取URLConnection對象對應(yīng)的輸出流 out = new PrintWriter(conn.getOutputStream()); // 發(fā)送請求參數(shù) out.print(data); // flush輸出流的緩沖 out.flush(); // 定義BufferedReader輸入流來讀取URL的響應(yīng) in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("發(fā)送 POST 請求出現(xiàn)異常!"+e); e.printStackTrace(); } //使用finally塊來關(guān)閉輸出流、輸入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } /** * 上傳圖片 * * @param urlStr * @param textMap * @param fileMap * @return */ public static String formUpload(String urlStr, Map<String, String> textMap, Map<String, String> fileMap) { String res = ""; HttpURLConnection conn = null; String BOUNDARY = "---------------------------123821742118716"; //boundary就是request頭和上傳文件內(nèi)容的分隔符 try { URL url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); // System.out.println(conn); conn.setConnectTimeout(5000); conn.setReadTimeout(30000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn .setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); OutputStream out = new DataOutputStream(conn.getOutputStream()); // text if (textMap != null) { StringBuffer strBuf = new StringBuffer(); Iterator iter = textMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String inputName = (String) entry.getKey(); String inputValue = (String) entry.getValue(); if (inputValue == null) { continue; } strBuf.append("\r\n").append("--").append(BOUNDARY).append( "\r\n"); strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"\r\n\r\n"); strBuf.append(inputValue); } out.write(strBuf.toString().getBytes()); } // file if (fileMap != null) { Iterator iter = fileMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String inputName = (String) entry.getKey(); String inputValue = (String) entry.getValue(); if (inputValue == null) { continue; } File file = new File(inputValue); String filename = file.getName(); String contentType = new MimetypesFileTypeMap() .getContentType(file); if (filename.endsWith(".png")) { contentType = "image/png"; } if (contentType == null || contentType.equals("")) { contentType = "application/octet-stream"; } StringBuffer strBuf = new StringBuffer(); strBuf.append("\r\n").append("--").append(BOUNDARY).append( "\r\n"); strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"; filename=\"" + filename + "\"\r\n"); strBuf.append("Content-Type:" + contentType + "\r\n\r\n"); out.write(strBuf.toString().getBytes()); DataInputStream in = new DataInputStream( new FileInputStream(file)); int bytes = 0; byte[] bufferOut = new byte[1024]; while ((bytes = in.read(bufferOut)) != -1) { out.write(bufferOut, 0, bytes); } in.close(); } } byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes(); out.write(endData); out.flush(); out.close(); // 讀取返回數(shù)據(jù) StringBuffer strBuf = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { strBuf.append(line).append("\n"); } res = strBuf.toString(); reader.close(); reader = null; } catch (Exception e) { System.out.println("發(fā)送POST請求出錯。" + urlStr); e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); conn = null; } } return res; } }
WeChat 開発では、メッセージ インターフェイスは通常、get リクエストと post リクエストを送信するために使用されます。 xml 形式であり、他のインターフェイスによってアップロードおよび返されるデータは通常 json であるため、json を解析するためのパッケージが必要です。もちろん、gson も使用できます
次に、メッセージ インターフェイスのテストを開始する必要があります。まずリクエストのプロセスを理解してください:
WeChat サーバーは、入力された URL に基づいて検証のための取得リクエストを送信します。検証が成功すると、引き続き URL に基づいて投稿リクエストが送信されます。メッセージ形式は XML です。フォーマット
メッセージタイプの開発ドキュメントがリストされており、主にテキスト、畫像、音聲、その他のメッセージと、フォロー、クリック、ジャンプなどのいくつかのイベントが含まれます。
これらのメッセージとイベントは XML 形式であるため、XML 形式のメッセージを解析するには、dom4j を使用して解析します。
メッセージを解析するために接続されたサーブレットの doPost メソッドを以前に検証しました。
Liu Feng の手順に従いました。 blog に書かれているメソッドは MessageUtil で、XML を解析するメソッドをカプセル化し、解析結(jié)果を Map
msgType
=requestMap
.get
("MsgType"); から取得できます。 次に、メッセージのタイプを決定します。異なるメッセージ タイプは異なるサーブレットによって処理され、必要に応じて異なるメッセージを返すことができます。 XML 形式でも、返されるメッセージのタイプは基本的に受け入れられたメッセージのタイプと同様です。これらの返されるメッセージはフィールド名に対応し、內(nèi)容はフィールドの內(nèi)容になります。 set メソッドと get メソッドは省略されています
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception { // 將解析結(jié)果存儲在HashMap中 Map<String, String> map = new HashMap<String, String>(); // 從request中取得輸入流 InputStream inputStream = request.getInputStream(); // 讀取輸入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子節(jié)點 List<Element> elementList = root.elements(); // 遍歷所有子節(jié)點 for (Element e : elementList) map.put(e.getName(), e.getText()); // 釋放資源 inputStream.close(); inputStream = null; return map; }
異なるメッセージが同じフィールドを持つため、共通の基本クラスが記述されます。
これで、ユーザーにメッセージを返すまであと一歩です
xstream を使用して、これらの pojo クラスを XML 文字列に変換します
// 文本消息 if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { request.getRequestDispatcher("TextMessage").forward(request, response); } // 圖片消息 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) { request.getRequestDispatcher("ImageServlet").forward(request, response); } // 地理位置消息 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) { request.getRequestDispatcher("LocationServlet").forward(request, response); } // 鏈接消息 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) { request.getRequestDispatcher("LinkServlet").forward(request, response); } // 音頻消息 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) { request.getRequestDispatcher("VedioServlet").forward(request, response); } // 事件推送 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) { // 事件類型 String eventType = requestMap.get("Event"); // 訂閱 if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { request.getRequestDispatcher("SubServlet").forward(request, response); } // 取消訂閱 else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) { // TODO 取消訂閱后用戶再收不到公眾號發(fā)送的消息,因此不需要回復(fù)消息 } // 自定義菜單點擊事件 else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) { // TODO 自定義菜單權(quán)沒有開放,暫不處理該類消息 request.getRequestDispatcher("ClickServlet").forward(request, response); } }
詳細(xì)については、こちらを參照してください。 Liu Feng のブログ、リンクを忘れました。Baidu から取得できるはずです
最後に、取得した文字列を WeChat サーバーに返すと、ユーザーに返信できます。
これらのメッセージインターフェイスだけを使って簡単なサブスクリプションアカウントを作成できます。一般的な企業(yè)の公開アカウントは、ビュータイプのボタンから自社の Web サイトにジャンプするようです。
これで、上記のインターフェイスを使用して、ユーザーから送信されたさまざまなメッセージを受け入れ、メッセージを事前に処理したり、天気、ジョーク、記事などの API を呼び出して結(jié)果を取得したり、解析したりすることができます。ユーザーに話を戻すと、ライフ アシスタントなどのサブスクリプション アカウントをインターンできますが、個人が申請したサブスクリプション アカウントには権限が限られており、それができるかどうかはわかりません。 。
以上がWeChatが開発したメッセージインターフェースの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

PHP は、Web 開発およびサーバーサイド プログラミング、特に WeChat 開発で広く使用されているオープン ソースのスクリプト言語です?,F(xiàn)在、ますます多くの企業(yè)や開発者が WeChat 開発に PHP を使用し始めています。これは、PHP が本當(dāng)に學(xué)びやすく、使いやすい開発言語となっているためです。 WeChat の開発では、メッセージの暗號化と復(fù)號化はデータのセキュリティに関わるため、非常に重要な問題となります。暗號化と復(fù)號化の方法を持たないメッセージの場合、ハッカーは簡単にデータを入手でき、ユーザーに脅威を與える可能性があります。

WeChat パブリック アカウントの開発では、投票機(jī)能がよく使用されます。投票機(jī)能はユーザーが気軽に交流に參加できるほか、イベントの開催や意見調(diào)査などにも重要なツールです。この記事では、PHPを使用してWeChatの投票機(jī)能を?qū)g裝する方法を紹介します。 WeChat公式アカウントの認(rèn)証を取得する まずはWeChat公式アカウントの認(rèn)証を取得する必要があります。 WeChatパブリックプラットフォームでは、WeChatパブリックアカウント、公式アカウント、およびパブリックアカウントに対応するトークンのAPIアドレスを設(shè)定する必要があります。 PHP言語を使用した開発の過程では、WeChatが公式に提供するPHを使用する必要があります

WeChat の人気に伴い、マーケティング ツールとして WeChat を使用し始める企業(yè)が増えています。 WeChat グループ メッセージング機(jī)能は、企業(yè)が WeChat マーケティングを行うための重要な手段の 1 つです。ただし、手動送信のみに頼ると、マーケターにとって非常に時間と労力がかかる作業(yè)になります。したがって、WeChat マス メッセージング ツールを開発することが特に重要です。この記事では、PHP を使用して WeChat マス メッセージング ツールを開発する方法を紹介します。 1. 準(zhǔn)備作業(yè) WeChat マス メッセージング ツールを開発するには、次の技術(shù)點を習(xí)得する必要があります。 PHP WeChat パブリック プラットフォーム開発の基礎(chǔ)知識 開発ツール: Sub

WeChat は現(xiàn)在、世界最大のユーザーベースを持つソーシャル プラットフォームの 1 つであり、モバイル インターネットの普及に伴い、ますます多くの企業(yè)が WeChat マーケティングの重要性を認(rèn)識し始めています。 WeChat マーケティングを?qū)g施する場合、顧客サービスは重要な部分です。カスタマー サービスのチャット ウィンドウをより適切に管理するために、WeChat 開発に PHP 言語を使用できます。 1. PHP WeChat 開発の概要 PHP は、Web 開発の分野で広く使用されているオープン ソースのサーバー側(cè)スクリプト言語です。 WeChat パブリック プラットフォームが提供する開発インターフェイスと組み合わせると、PHP 言語を使用して WeChat を?qū)g行できます。

WeChat パブリック アカウントの開発において、ユーザー タグ管理は非常に重要な機(jī)能であり、開発者がユーザーをよりよく理解し、管理できるようになります。この記事では、PHPを使用してWeChatのユーザータグ管理機(jī)能を?qū)g裝する方法を紹介します。 1. WeChat ユーザーの openid を取得する WeChat ユーザータグ管理機(jī)能を使用する前に、まずユーザーの openid を取得する必要があります。 WeChat パブリック アカウントの開発では、ユーザーの承認(rèn)を通じて openid を取得するのが一般的です。ユーザー認(rèn)証が完了したら、次のコードを通じてユーザーを取得できます。

WeChat が人々の生活においてますます重要なコミュニケーション ツールになるにつれ、その機(jī)敏なメッセージング機(jī)能はすぐに多くの企業(yè)や個人に支持されるようになりました。企業(yè)にとって、WeChat をマーケティング プラットフォームとして開発することがトレンドになっており、WeChat 開発の重要性が徐々に顕著になってきています。その中でも、グループ送信機(jī)能はさらに広く使用されているため、PHP プログラマとしてグループ メッセージ送信レコードを?qū)g裝するにはどうすればよいでしょうか?以下に簡単に紹介します。 1. WeChat パブリック アカウントに関する開発知識を理解する グループ メッセージ送信レコードの実裝方法を理解する前に、

PHP を使用して WeChat 公開アカウントを開発する方法 WeChat 公開アカウントは、多くの企業(yè)にとってプロモーションと交流のための重要なチャネルとなっており、一般的に使用される Web 言語として PHP を使用して WeChat 公開アカウントを開発することもできます。この記事では、PHP を使用して WeChat 公開アカウントを開発する具體的な手順を紹介します。ステップ1:WeChat公式アカウントの開発者アカウントを取得する WeChat公式アカウントの開発を開始する前に、WeChat公式アカウントの開発者アカウントを申請する必要があります。具體的な登録プロセスについては、WeChat パブリック プラットフォームの公式 Web サイトを參照してください。

インターネットとモバイル スマート デバイスの発展に伴い、WeChat はソーシャルおよびマーケティング分野に欠かせないものになりました。デジタル化が進(jìn)むこの時代において、WeChat 開発に PHP を使用する方法が多くの開発者の焦點になっています。この記事では主に、PHP を WeChat 開発に使用する方法とそのヒントや注意事項を紹介します。 1. 開発環(huán)境の準(zhǔn)備 WeChat を開発する前に、まず対応する開発環(huán)境を準(zhǔn)備する必要があります。具體的には、PHP オペレーティング環(huán)境と WeChat パブリック プラットフォームをインストールする必要があります。
