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

WeChat 開発のための delphi+intraweb - WeChat プラットフォームへのアクセス

高洛峰
高洛峰オリジナル
2017-03-04 11:28:481918ブラウズ

サンプルコードを公開しました! 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 までご連絡ください。