1

OnHTTPBeforeCommandまたはOnHTTPDocumentイベントを使用して、TIdHTTPProxyServerから投稿データを取得しようとしていますが、すべてが役に立ちません。どうやってやるの?

ところで、私はIndy 10を使用していますが、他のソリューション(たとえば、シナプスを使用)はかっこいいでしょう。

前もって感謝します。

4

1 に答える 1

1

POSTデータはOnHTTPBeforeCommandまだソケットから読み取られていないため、イベントで使用できません。そのイベントで使用できるのは HTTP ヘッダーのみです。

POSTイベントでデータを利用できますがOnHTTPDocument、次の条件下でのみ使用できます。

  1. リクエストはPOSTゼロ以外のContent-Lengthヘッダーを使用します (圧縮/チャンクされた HTTP メッセージを処理するTIdHTTPProxyServerためのヘッダーをまだサポートしていないため)。Transfer-Encoding

  2. TIdHTTPProxyServerContext.TransferModeプロパティは、イベントが終了tmFullDocumentしたときです。OnHTTPBeforeCommandデフォルトでは、はプロパティTransferModeと同じ値に設定されています。これはデフォルトです。TIdHTTPProxyServer.DefaultTransferModetmFullDocument

  3. クライアントは、ターゲットとして完全な URL を指定しPOSTて、リクエストを に直接送信します。TIdHTTPProxyServer代わりに、クライアントがターゲット サーバーへのトンネルを確立するためにCONNECT直接要求を送信し、トンネルを介してターゲット サーバーに要求を送信する場合 (たとえば、HTTPS 要求の SSL セッションを確立する場合) は、そのデータへのアクセスを公開しません。これは、あるソケットから別のソケットへのストレート パススルーです。TIdHTTPProxyServerPOSTTIdHTTPProxyServer

于 2013-02-20T18:14:38.913 に答える