Web请求属性“URL”为空

时间:2013-07-18 18:32:00

标签: delphi http uri delphi-xe2 indy10

我正在尝试弄清楚如何从请求(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 

1 个答案:

答案 0 :(得分:2)

我不知道为什么INDEX_URL会返回一个空字符串。显然,这是故意的。

如果您更仔细地查看IdHTTPWebBrokerBridge.pas代码,您会看到INDEX_URL曾用于返回FRequestInfo.Document,这与INDEX_PathInfo和{{1}的值相同两者都回归。因此,您可以尝试使用INDEX_PathTranslatedTWebRequest.HostTWebRequest.ServerPortTWebRequest.Path...属性的组合来重新创建您要查找的网址(减去协议,您将使用只需硬编码。

此外,XE +具有TWebRequest.Query属性,TWebRequest.RawPathInfo实现该属性以返回Indy的TIdHTTPAppRequest属性值,因此您也应该查看它。