在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
初步了解了一下HTTP1.1 小试了一下,利用TcpClient控件发送HTTP1.1命令到IIS后取得网页内容。 unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets; type TForm1 = class(TForm) Button1: TButton; TcpClient1: TTcpClient; Memo1: TMemo; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Test: string; HttpLen: integer; begin TcpClient1.RemoteHost := 'www.163.cn'; TcpClient1.RemotePort := '80'; TcpClient1.Active := true; if TcpClient1.Connected then begin //发送HTTP1.1指令 TcpClient1.Sendln('GET / HTTP/1.1'); TcpClient1.Sendln('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*'); TcpClient1.Sendln('User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)'); TcpClient1.Sendln('Host: www.163.cn'); TcpClient1.Sendln('Connection: Keep-Alive'); TcpClient1.Sendln(''); end; HttpLen := 0; //循环读取所有返回的数据头信息 while true do begin Test := TcpClient1.Receiveln(); Memo1.Lines.Add(Test); if Test = '' then Break; if Pos('Content-Length: ', Test) > 0 then begin Delete(Test, 1, 16); HttpLen := StrToInt(Test); //获取将要读取的数据长度 end; end; LockWindowUpdate(Memo1.Handle); Memo1.Clear; //循环读取所有返回的数据直接数据接收完毕 while (Length(Memo1.Text) < HttpLen - 2) or (TcpClient1.WaitForData(0) and (HttpLen = 0)) do begin Memo1.Lines.Add(TcpClient1.Receiveln(#$0D#$0A)); Application.ProcessMessages; Edit1.Text := Format('总长度:%d 已下载:%d ', [HttpLen, Length(Memo1.Text)]); end; //有些网页返回的非ANSI字符串,则需要转码,否则中文全是乱码 if Length(Memo1.Text) = HttpLen - 2 then Memo1.Text := Utf8ToAnsi(Memo1.Text); LockWindowUpdate(0); Memo1.Lines.SaveToFile('d:\test.txt'); ShowMessage('完成数据下载'); end; end. 这只是小试了一下HTTP1.1的几个指令,通过多线程等,可以让这个程序更完美一点,以后再搞。并且这里也只是试了一下GET方式的指令,有空再试试POST方法向IIS提交数据等功能。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论