1

リクエストから完全なURIを読み取る方法を見つけようとしています( Web.HTTPApp.TWebRequest)。プロパティはありますがURL、空を返します。これを可能にするプロパティが他にありません。リクエストの完全な URI を取得するにはどうすればよいですか? これは Indy 10 経由で使用されていTIdHTTPWebBrokerBridgeます。

例えば...

http://www.mydomain.com:18500/SomePath/SomeFile.html?n=v&a=b

このプロパティを追跡しようとしたところ、明らかに意図的に空白のままになっていることがURLわかりました...IdHTTPWebBrokerBridge.pas

function TIdHTTPAppRequest.GetStringVariable(Index: Integer): AnsiString;
...
  case Index of
    ...
    //INDEX_URL             : Result := AnsiString(FRequestInfo.Document);
    INDEX_URL             : Result := AnsiString(''); // Root - consistent with ISAPI which return path to root 
4

1 に答える 1

2

INDEX_URL空白の文字列を返す理由がわかりません。明らかにわざとだったんですけどね。

IdHTTPWebBrokerBridge.pasコードをより注意深く見ると、がINDEX_URLreturn に使用されていたことがわかります。これは、と両方が返すFRequestInfo.Document値と同じです。したがって、、、、、およびプロパティの組み合わせを使用して、探している URL を再作成することができます (ハードコードする必要があるプロトコルを除く)。INDEX_PathInfoINDEX_PathTranslatedTWebRequest.HostTWebRequest.ServerPortTWebRequest.Path...TWebRequest.Query

また、XE+ にはIndy のプロパティ値を返すようTWebRequest.RawPathInfoに実装するプロパティがあるので、そちらも参照してください。TIdHTTPAppRequestTIdHTTPRequestInfo.URI

于 2013-07-23T23:01:06.263 に答える