delphi idhttpsever
http://blog.csdn.net/chelen_jak/article/details/50203809
delphi idhttpsever
Delphi(54) 
- 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.
delphi idhttpsever的更多相关文章
- Delphi IdHttp组件+IdHttpServer组件实现文件下载服务
http://blog.csdn.net/xxkku521/article/details/16864759 Delphi IdHttp组件+IdHttpServer组件实现文件下载服务 2013- ...
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [Delphi] Delphi版本号对照
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...
- delphi tidhttp 超时设置无效的解决方法
现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...
- Delphi Code Editor 之 编辑器选项
Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...
- Delphi使用ADO进行数据库编程
Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...
- 怎么使用Delphi获取当前的时间,精确到毫秒
先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...
随机推荐
- Mac下安装配置gradle
1.下载gradle2.解压3.获得gradle解压后的路径4.修改.bash_profile文件,配置环境变量 vi ~./bash_profile export GRADLE_HOME=/User ...
- 词频统计小程序-WordCount.exe
一. 背景 最近顶哥为了完成学历提升学业中的小作业,做了一个词频统计的.exe小程序.因为当时做的时候网上的比较少,因此顶哥决定把自己拙略的作品发出来给需要的人提供一种思路,希望各位看官不要dis ...
- Git-第五篇廖雪峰Git教程学习笔记(4)分支
1.一开始,只有一个主分支(master),HEAD指向Master,而Master指向主分支.现在我们创建dev分支. lfy@lfy-PC MINGW64 /c/fyliu/lfyTemp/git ...
- Codeforces 984D 题解(DP)
题面 传送门 题目大意: 给你一个计算区间f函数的公式,举例f(1,2,4,8)=f(1⊕2,2⊕4,4⊕8)=f(3,6,12)=f(3⊕6,6⊕12)=f(5,10)=f(5⊕10)=f(15)= ...
- VBA中如何用environ$ 或 environ方法取得环境变量?
用索引号取得环境变量Sub EnumSEVars() Dim strVar As String Dim i As Long strVar = Environ$(i) & Then Exit F ...
- Windows Server 搭建企业无线认证(NPS搭建)
现代企业无线网络是必备,移动办公更是需求日益剧增.而带来的无线网络安全隐患随之而来,也是面临着巨大的挑战.所以对无线网络做接入认证是现在企业很迫切的需求. 上一遍已经说明了Radius认证方案:htt ...
- Leetcode Lect7 哈希表
传统的哈希表 对于长度为n的哈希表,它的存储过程如下: 根据 key 计算出它的哈希值 h=hash(key) 假设箱子的个数为 n,那么这个键值对应该放在第 (h % n) 个箱子中 如果该箱子中已 ...
- MicroPython 的优势
定位的场景 MicroPython 在设计上最初就是为了嵌入式微处理器运行,例如在 nRF51822 (256kB flash + 16kB RAM) 的芯片上也可以运行起来,也有人肾得慌在 STM3 ...
- es6 promise 结束回调地狱
promise的三种状态: pending---进行中 fulfiled---执行成功 rejected---执行失败 var promise = new Promise(function(resol ...
- git flow工作流
https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md 说明: 个人在学习Git工作流的过程中,从原有的 SVN 模 ...