正如 Remy Lebeau 所说,似乎没有办法指定自定义Host
标题。所以我决定IdHTTP
稍微修改一下代码。
IdHTTP.pas
首先,我将( )复制C:\Program Files (x86)\Embarcadero\Studio\XX.0\source\Indy10\Protocols\IdHTTP.pas
到我的项目目录并将其添加到我的项目中。然后在TIdCustomHTTP.PrepareRequest
方法(第 1792 行)中,我更改了如下代码:
if (TextIsSame(FURI.Protocol, 'http') and (FURI.Port = IntToStr(IdPORT_HTTP))) or {do not localize}
(TextIsSame(FURI.Protocol, 'https') and (FURI.Port = IntToStr(IdPORT_https))) then {do not localize}
begin
if FURI.Host = 'stackoverflow.com' then
ARequest.Host := 'example.com'
else
ARequest.Host := FURI.Host;
end else begin
if FURI.Host = 'stackoverflow.com' then
ARequest.Host := 'example.com' + ':' + FURI.Port {do not localize}
else
ARequest.Host := FURI.Host + ':' + FURI.Port; {do not localize}
end;
我知道这不是最好的方法,修改库也不是一个好主意,但它对我有用。
因此,如果我将上面的示例更改stackoverflow.com
为myblog.wordpress.com
和example.com
,anotherblog.wordpress.com
我们IdHTTP1.Get('http://myblog.wordpress.com')
将获得anotherblog.wordpress.com
内容。