delphi httpserver 使用方法
2016-03-15 09:47
579 查看
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent,IdContext ,IdComponent, IdCustomTCPServer, IdCustomHTTPServer,
IdHTTPServer, StdCtrls;
type
TForm_main = class(TForm)
IdHTTPServer1: TIdHTTPServer;
Button_StartServer: TButton;
Edit_Port: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit_Ip: TEdit;
Button_stop: TButton;
Label3: TLabel;
Edit_RootDir: TEdit;
Edit_index: TEdit;
Label4: TLabel;
procedure Button_StartServerClick(Sender: TObject);
procedure Button_stopClick(Sender: TObject);
procedure IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_main: TForm_main;
implementation
var
RootDir:string;
URL:string;
{$R *.dfm}
procedure TForm_main.Button_StartServerClick(Sender: TObject);
begin
try
IdHTTPServer1.Bindings.Clear;
//要绑定的端口,一定设置此项,这是真正要绑定的端口;
IdHTTPServer1.DefaultPort:=strtoint(trim(edit_port.Text));
IdHTTPServer1.Bindings.Add.IP := trim(edit_Ip.Text);
//启动服务器
IdHTTPServer1.Active := True;
except
showmessage('启动失败!');
end;
RootDir:=trim(edit_rootDir.Text);
URL:='http://'+trim(edit_Ip.Text)+trim(edit_port.Text)+'/';
end;
procedure TForm_main.Button_stopClick(Sender: TObject);
begin
IdHTTPServer1.Active := false;
end;
procedure TForm_main.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
LFilename: string;
LPathname: string;
zhongwen:string;
begin
//浏览器请求http://127.0.0.1:8008/index.html?a=1&b=2
//ARequestInfo.Document 返回 /index.html
//ARequestInfo.QueryParams 返回 a=1b=2
//ARequestInfo.Params.Values['name'] 接收get,post过来的数据
////webserver发文件
{LFilename := ARequestInfo.Document;
if LFilename = '/' then
begin
LFilename := '/'+trim(edit_index.Text);
end;
LPathname := RootDir + LFilename;
if FileExists(LPathname) then begin
AResponseInfo.ContentStream := TFileStream.Create(LPathname, fmOpenRead + fmShareDenyWrite);//发文件
end
else
begin
AResponseInfo.ResponseNo := 404;
AResponseInfo.ContentText := '找不到' + ARequestInfo.Document;
end; }
//发html文件
{AResponseInfo.ContentEncoding:='utf-8';
AResponseInfo.ContentType :='text/html';
AResponseInfo.ContentText:='<html><body>好</body></html>'; }
//发xml文件
{AResponseInfo.ContentType :='text/xml';
AResponseInfo.ContentText:='<?xml version="1.0" encoding="utf-8"?>'
+'<students>'
+'<student sex = "male"><name>'+AnsiToUtf8('陈')+'</name><age>14</age></student>'
+'<student sex = "female"><name>bb</name><age>16</age></student>'
+'</students>';}
//下载文件时,直接从网页打开而没有弹出保存对话框的问题解决
//AResponseInfo.CustomHeaders.Values['Content-Disposition'] :='attachment; filename="'+文件名+'"';
//替换 IIS
{AResponseInfo.Server:='IIS/6.0';
AResponseInfo.CacheControl:='no-cache';
AResponseInfo.Pragma:='no-cache';
AResponseInfo.Date:=Now;}
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent,IdContext ,IdComponent, IdCustomTCPServer, IdCustomHTTPServer,
IdHTTPServer, StdCtrls;
type
TForm_main = class(TForm)
IdHTTPServer1: TIdHTTPServer;
Button_StartServer: TButton;
Edit_Port: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit_Ip: TEdit;
Button_stop: TButton;
Label3: TLabel;
Edit_RootDir: TEdit;
Edit_index: TEdit;
Label4: TLabel;
procedure Button_StartServerClick(Sender: TObject);
procedure Button_stopClick(Sender: TObject);
procedure IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_main: TForm_main;
implementation
var
RootDir:string;
URL:string;
{$R *.dfm}
procedure TForm_main.Button_StartServerClick(Sender: TObject);
begin
try
IdHTTPServer1.Bindings.Clear;
//要绑定的端口,一定设置此项,这是真正要绑定的端口;
IdHTTPServer1.DefaultPort:=strtoint(trim(edit_port.Text));
IdHTTPServer1.Bindings.Add.IP := trim(edit_Ip.Text);
//启动服务器
IdHTTPServer1.Active := True;
except
showmessage('启动失败!');
end;
RootDir:=trim(edit_rootDir.Text);
URL:='http://'+trim(edit_Ip.Text)+trim(edit_port.Text)+'/';
end;
procedure TForm_main.Button_stopClick(Sender: TObject);
begin
IdHTTPServer1.Active := false;
end;
procedure TForm_main.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
LFilename: string;
LPathname: string;
zhongwen:string;
begin
//浏览器请求http://127.0.0.1:8008/index.html?a=1&b=2
//ARequestInfo.Document 返回 /index.html
//ARequestInfo.QueryParams 返回 a=1b=2
//ARequestInfo.Params.Values['name'] 接收get,post过来的数据
////webserver发文件
{LFilename := ARequestInfo.Document;
if LFilename = '/' then
begin
LFilename := '/'+trim(edit_index.Text);
end;
LPathname := RootDir + LFilename;
if FileExists(LPathname) then begin
AResponseInfo.ContentStream := TFileStream.Create(LPathname, fmOpenRead + fmShareDenyWrite);//发文件
end
else
begin
AResponseInfo.ResponseNo := 404;
AResponseInfo.ContentText := '找不到' + ARequestInfo.Document;
end; }
//发html文件
{AResponseInfo.ContentEncoding:='utf-8';
AResponseInfo.ContentType :='text/html';
AResponseInfo.ContentText:='<html><body>好</body></html>'; }
//发xml文件
{AResponseInfo.ContentType :='text/xml';
AResponseInfo.ContentText:='<?xml version="1.0" encoding="utf-8"?>'
+'<students>'
+'<student sex = "male"><name>'+AnsiToUtf8('陈')+'</name><age>14</age></student>'
+'<student sex = "female"><name>bb</name><age>16</age></student>'
+'</students>';}
//下载文件时,直接从网页打开而没有弹出保存对话框的问题解决
//AResponseInfo.CustomHeaders.Values['Content-Disposition'] :='attachment; filename="'+文件名+'"';
//替换 IIS
{AResponseInfo.Server:='IIS/6.0';
AResponseInfo.CacheControl:='no-cache';
AResponseInfo.Pragma:='no-cache';
AResponseInfo.Date:=Now;}
end;
end.
相关文章推荐
- Delphi IdHttp组件+IdHttpServer组件实现文件下载服务
- GSM模块通过国家网络授时中心获取网络时间同步
- tcp三次握手 redis 连接超时
- Android面向HTTP协议发送post请求
- iOS检测网络状态
- 【Boost】boost库asio详解8——TCP的简单例子1
- HTTPS与SSL(二)
- HTTPS与SSL(一)
- HTTP协议详解
- iOS 网络请求及数据解析
- Java中实现HTTP网络通信(1.1)
- HttpClient自动请求服务器类的简单使用
- Netty4实战 - TCP粘包&拆包解决方案
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- [HDU 4289]Control[网络流][拆点]
- Deep Learning模型之:CNN卷积神经网络(二) 文字识别系统LeNet-5
- TCP连接和断开
- HttpClient那些事儿