我正在尝试弄清楚如何从请求(Web.HTTPApp.TWebRequest
)中读取完整 URI。有一个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
答案 0 :(得分:2)
我不知道为什么INDEX_URL
会返回一个空字符串。显然,这是故意的。
如果您更仔细地查看IdHTTPWebBrokerBridge.pas
代码,您会看到INDEX_URL
曾用于返回FRequestInfo.Document
,这与INDEX_PathInfo
和{{1}的值相同两者都回归。因此,您可以尝试使用INDEX_PathTranslated
,TWebRequest.Host
,TWebRequest.ServerPort
和TWebRequest.Path...
属性的组合来重新创建您要查找的网址(减去协议,您将使用只需硬编码。
此外,XE +具有TWebRequest.Query
属性,TWebRequest.RawPathInfo
实现该属性以返回Indy的TIdHTTPAppRequest
属性值,因此您也应该查看它。