例如我要访问“http://www.baidu.com/home.html”这个页面应该怎么构造封包呢?
解决方案 »
- PrintDialog和PrinterSetupDialog 打印机选择以及打印份数控制
- 为什么Form1调用form2时会出错呢。不同的调用方法,结果却是完全不一样。。。。高手指教
- 我买了个新机子,装win2000复制文件时,不定时得死机,这是什么原因? 散分!
- 我想定义tquery的一个派生类,使其在execsql前先执行一个showmessage(sql.text);怎么实现呢
- luckyjan进来拉分,有个问题请教
- 请问,哪里有indy控件的中文说明?
- 很怪的问题
- 高分求教,有谁知道类似OUTLOOK左侧工具栏的实现原理及源代码,谢谢赐教!
- Delphi6自动完成的问题。
- friend,come!
- 关于Delphi和access的非法访问问题
- 串口通信出错,请帮我看看
http://blog.csdn.net/unsigned/archive/2008/09/22/2960982.aspx
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
if HeaderList <> '' then
HTTP.Headers.Add(HeaderList);
Result := HTTP.HTTPMethod('GET', URL);
Response.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;function HttpGetText(const URL: string; const Response: TStrings;
const ProxyHost, ProxyPort: string; HeaderList: string): Boolean; overload;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
HTTP.ProxyHost := ProxyHost;
HTTP.ProxyPort := ProxyPort;
if HeaderList <> '' then
HTTP.Headers.Add(HeaderList);
Result := HTTP.HTTPMethod('GET', URL);
Response.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;function HttpGetBinary(const URL: string; const Response: TStream; HeaderList: string): Boolean;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
if HeaderList <> '' then
HTTP.Headers.Add(HeaderList);
Result := HTTP.HTTPMethod('GET', URL);
Response.Seek(0, soFromBeginning);
Response.CopyFrom(HTTP.Document, 0);
finally
HTTP.Free;
end;
end;function HttpGetBinary(const URL: string; const Response: TStream;
const ProxyHost, ProxyPort: string; HeaderList: string): Boolean; overload;
var
HTTP: THTTPSend;
begin
Result := False;
HTTP := THTTPSend.Create;
try
HTTP.ProxyHost := ProxyHost;
HTTP.ProxyPort := ProxyPort;
if HeaderList <> '' then
HTTP.Headers.Add(HeaderList);
Result := HTTP.HTTPMethod('GET', URL);
Response.Seek(0, soFromBeginning);
Response.CopyFrom(HTTP.Document, 0);
finally
HTTP.Free;
end;
end;function HttpPostBinary(const URL: string; const Data: TStream): Boolean;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
HTTP.Document.CopyFrom(Data, 0);
HTTP.MimeType := 'Application/octet-stream';
Result := HTTP.HTTPMethod('POST', URL);
Data.Seek(0, soFromBeginning);
Data.CopyFrom(HTTP.Document, 0);
finally
HTTP.Free;
end;
end;function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
HTTP.Document.Write(Pointer(URLData)^, Length(URLData));
HTTP.MimeType := 'application/x-www-form-urlencoded';
Result := HTTP.HTTPMethod('POST', URL);
Data.CopyFrom(HTTP.Document, 0);
finally
HTTP.Free;
end;
end;function HttpPostURL(const URL, URLData: string; const Data: TStream;
const AProxySvr, AProxyPrt: string): Boolean;
var
HTTP: THTTPSend;
begin
HTTP := THTTPSend.Create;
try
HTTP.ProxyHost := AProxySvr;
HTTP.ProxyPort := AProxyPrt;
HTTP.Document.Write(Pointer(URLData)^, Length(URLData));
HTTP.MimeType := 'application/x-www-form-urlencoded';
Result := HTTP.HTTPMethod('POST', URL);
Data.CopyFrom(HTTP.Document, 0);
finally
HTTP.Free;
end;
end;function HttpPostURL(const URL, URLData: string; var Data: string): Boolean; overload;
var
AData: TMemoryStream;
slRet: TStringList;
begin
AData := TMemoryStream.Create;
try
Result := HttpPostURL(URL, URLData, AData);
if Result then
begin
slRet := TStringList.Create;
try
AData.Position := 0;
slRet.LoadFromStream(AData);
Data := slRet.Text;
finally
slRet.Free;
end;
end;
finally
AData.Free;
end;
end;function HttpPostURL(const URL, URLData: string; var Data: string;
const AProxySvr, AProxyPrt: string): Boolean; overload;
var
AData: TMemoryStream;
slRet: TStringList;
begin
AData := TMemoryStream.Create;
try
Result := HttpPostURL(URL, URLData, AData, AProxySvr, AProxyPrt);
if Result then
begin
slRet := TStringList.Create;
try
AData.Position := 0;
slRet.LoadFromStream(AData);
Data := slRet.Text;
finally
slRet.Free;
end;
end;
finally
AData.Free;
end;
end;function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '_Synapse_boundary';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: Application/octet-string' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data; boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;