検索
ホームページWeChat アプレットWeChatの開発WeChat 開発のための delphi+intraweb - WeChat プラットフォームへのアクセス

サンプルコードを公開しました! delphi+intraweb を使用して WeChat 開発 1 ~ 4 のコード サンプルをダウンロードしてください。これはサンプル コードですが、パッケージは完成しており、自己拡張や修正に適しています。

iw14.0.50 は、完全な httphandler 関数が追加されたことです。最後に、アドレス バーに URL を直接入力して、iw 関数ページを開くことができます。 EasyUI として; 表示モード ダイアログ ボックスが煩わしくなくなりました。これで、初めて主流の Web 開発ツールに近づいたように感じます。

とても興奮しているので、試してみましょう。実際、iw にはまだ落とし穴がたくさんありますが、それについては後ほど説明します...

1. 新しい iw プロジェクトを作成し、スタンドアロン サーバー/サービスを選択して開発するのが理想的です。このモードでは、正式にリリースされると、ライブラリ タイプのプロジェクトを作成して .net サーバーに公開できるため、デバッグが非常に便利になります。 (はい、正しく読みました。iw は isapi モードから離脱し、.net mvc4 アプリケーションと同じように IIS にデプロイできるようになりました。後で説明するように、.net 仮想ホストも iw アプリケーションを公開できます。大幅な改善です。)

2. プロジェクトを保存した後、たとえば wxapi.pas という名前の新しいユニット ファイルをプロジェクトに追加します。このファイル内のコードは WeChat アクセス処理を担当します。コードは次のとおりです:

EInterface erUses

クラス、iW.Content.base、System.Sysutils、httpapp、iWapplication、



i i





Type
//// & gt; クラスTContentBase から継承されたものは、asp.net の httphandler と同等です
///
TWxApi = class(TContentBase)
protected
function Execute(aRequest: THtt pRequest; aReply: THttpReply; const aPathname: string ; aSession: TIWApplication ; aParams: TStrings): Boolean; public
public コンストラクター Create; end
uses rSessionUnit、Crypt.SHA1; クエスト: THttpRequest;
aPathname: string; TIWApplication;
aParams: TStrings): ブール値;
タイムスタンプ: 文字列;
署名:= True; ']; '];

strs := TStringList.Create;
strs.Add('MyTestToken'); // トークンは WeChat インターフェイスの設定情報と一致している必要があります
strs.Add(timestamp); ;
begin
aReply.WriteString(echostr)
end else begin
aReply.WriteString('このプロンプトが表示された場合は、このリンク アドレスが WeChat インターフェイス アドレスとして使用できることを意味します。 ');
end;
aSession.Terminate; // セッション リソースを解放します。このハンドラーはセッションを必要としません。
end; iwForm を使用する必要がある場合は、使用できる TContentForm 基本クラスもあります。ブラウザのアドレス バーに URL を入力して iwform を直接開くこともできます。 TWxApi.Execute のコードは WeChat アクセス用のコードです。理解できない場合は、WeChat ヘルプ: WeChat アクセス ガイドを参照してください。


3. この httphandler を ServerController に登録し、ServerController 登録コードを直接ポストします:
procedure TIWServerController.IWServerControllerBaseConfig(Sender: TObject);
begin
// ServerController.OnConfig イベントで、定義した WeChat ハンドラーを登録します
// ServerController。 Onconfigイベントは、アプリケーションのライフサイクルで1回しか実行されません、最初に /$/start を実行してセッションを開始する必要があります。その後、 // 通常、/wxapi.php ページにアクセスできます。これは明らかに必要なものではありません。
end; ://localhost/wxapi.php
登録したコントローラーにアクセスできます。

しかし、このコードには小さな落とし穴があります。詳細については、私のコードのコメントを参照してください。

落とし穴は、ハンドラーが登録された後、iw アプリケーションが開始されることですが、プログラムを開始するためにブラウザーのアドレス バーに /$/start を入力する代わりに、/wxapi.php を直接入力すると httphandler の検証に失敗し、ページは自動的にメイン フォームに移動します。ヘルプを読んだ後、TContentBase.RequiresSessionStart:=false を設定する必要があることがわかりました。そうでない場合、iw アプリケーションは httphandler を使用する前に、まずセッションを開始してメイン フォームにアクセスする必要があります。ヘルプに従って、TContentBase.RequiresSessionStart:=false を設定しました。 /wxapi.php を直接入力しても機能しませんが、再度メイン フォームに移動すると、httphandler コードが実際に実行されたことが判明したため、404 コード エラーが表示されます。エラー。マルチパーティの検証と実験により、TContentBase.CanStartSession:= True を設定する必要があることがわかりました。笑、これはヘルプには記載されていませんが、おそらく新しいバージョンで新しく追加された属性です。さて、アドレスバーに
http://localhost/wxapi.php
と入力すると、ページが通常どおり開くことができます。

4. コンパイルされた iw アプリケーションをテスト用にホストにコピーし、実際に WeChat にアクセスします

が、実際には構成が失敗したことを示すメッセージが表示されます。何が起こっているのでしょうか? 私が使用したコードは、他の人が作成した WeChat アクセス インターフェイス コードの Delphi バージョンからコピーされたものでした。そのとき、最初に思ったのは、ページのエンコードが間違っているということでした。 iw のハンドラーのデフォルトのエンコーディングを UTF-8 形式に変更したので、gbk、iso-8859-1 などのエンコーディング形式を試しましたが、上記のエラーが表示されました。仕方なく、ハンドラー コードが実行されたかどうかをログに記録しました。結果は衝撃的でした。しかし、ローカル マシンでデバッグすると、ハンドラー コードは実行されませんでした。実サーバーのブラウザで閲覧しても問題ありません。何日もかけてさまざまなテストと修正を行った後、私はあきらめるつもりでしたが、iw の httphandler サンプルを調べたところ、その ServerController: OnBrowserCheck にイベントが実装されていることがわかりました。同じイベント コードをテスト用に自分のコードに追加しました。すごい、うまくいきました。 。 。

procedure TIWServerController.IWServerControllerBaseBrowserCheck(
aSession: TIWApplication; var rBrowser: TBrowser);
begin
// このイベント コードは非常に重要です。私はここで数日間行き詰まっています。
//
// このイベントが実装されていない場合、どのブラウザでも /wxapi.php を入力すると正常に応答できます。
// WeChat で設定が失敗したことが示された場合にのみ、コード内のログ出力を使用したことがわかりました。 WeChat リクエストは受信できますが、
// TWxApi.Execute メソッドは実行されません。その後、公式 Web サイトにアクセスして関連するヘルプを読んだところ、ブラウザのみをサポートしていることがわかりました
// ブラウザは出力に正常に応答できます。 WeChat によって送信された TWxApi.Execute メソッド この Web リクエストは明らかに既知のブラウザーに属しません
rBrowser が TOther の場合、開始します
rBrowser := TInternetExplorer.Create(8); // ページのコンテンツを出力します互換性のある IE8 ページの閲覧
end;
end;

、ははは、ほんの数行のコードに数日苦労しましたが、ついに WeChat 開発に使用できるようになりました。 delphi+intraweb进行微信开发-微信平台接入

このように、コンパイラ以外のすべてのソースコードが提供されているのは、問題が発生した場合でもソースコードを読むことで解決できることだと思います。ソース コードがないので、ヘルプが追いつきません。オンライン ヘルプは非常に弱すぎます。iw を使用している友人には、寄り道を避けるために、オンライン ヘルプと iw 独自のサンプル プロジェクトを合わせて読むことをお勧めします。しかし、iw は今日まで開発されており、特に Delphi のバックグラウンドを持つ人にとっては、Web 開発に最高の言語と開発ツールを使用できるのは本当に素晴らしいことです。

WeChat 開発のための Delphi+intraweb - WeChat プラットフォームへのアクセスの詳細については、PHP 中国語 Web サイトの関連記事に注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール