Delphi IDHTTP控件:GET/POST 请求

 

最近一直在使用IDHTTP,下面是一些关于 GET、POST 请求基本使用方法的代码

一、GET 请求

 1 procedure GetDemo;
2 var
3 IdHttp : TIdHTTP;
4 Url : string;//请求地址
5 ResponseStream : TStringStream; //返回信息
6 ResponseStr : string;
7 begin
8 //创建IDHTTP控件
9 IdHttp := TIdHTTP.Create(nil);
10 //TStringStream对象用于保存响应信息
11 ResponseStream := TStringStream.Create('');
12 try
13 //请求地址
14 Url := 'http://dict.youdao.com/';
15 try
16 IdHttp.Get(Url,ResponseStream);
17 except
18 on e : Exception do
19 begin
20 ShowMessage(e.Message);
21 end;
22 end;
23 //获取网页返回的信息
24 ResponseStr := ResponseStream.DataString;
25 //网页中的存在中文时,需要进行UTF8解码
26 ResponseStr := UTF8Decode(ResponseStr);
27 finally
28 IdHttp.Free;
29 ResponseStream.Free;
30 end;
31 end;

如果Get需要添加请求参数,则直接在地址后添加,各参数间用&连接

如:http://dict.youdao.com?param1=1&param2=2

二、Post 请求

 1 procedure PostDemo;
2 var
3 IdHttp : TIdHTTP;
4 Url : string;//请求地址
5 ResponseStream : TStringStream; //返回信息
6 ResponseStr : string;
7
8 RequestList : TStringList; //请求信息
9 RequestStream : TStringStream;
10 begin
11 //创建IDHTTP控件
12 IdHttp := TIdHTTP.Create(nil);
13 //TStringStream对象用于保存响应信息
14 ResponseStream := TStringStream.Create('');
15
16 RequestStream := TStringStream.Create('');
17 RequestList := TStringList.Create;
18 try
19 Url := 'http://f.youdao.com/?path=fanyi&vendor=fanyiinput';
20 try
21 //以列表的方式提交参数
22 RequestList.Add('text=love');
23 IdHttp.Post(Url,RequestList,ResponseStream);
24
25 //以流的方式提交参数
26 RequestStream.WriteString('text=love');
27 IdHttp.Post(Url,RequestStream,ResponseStream);
28 except
29 on e : Exception do
30 begin
31 ShowMessage(e.Message);
32 end;
33 end;
34 //获取网页返回的信息
35 ResponseStr := ResponseStream.DataString;
36 //网页中的存在中文时,需要进行UTF8解码
37 ResponseStr := UTF8Decode(ResponseStr);
38 finally
39 IdHttp.Free;
40 RequestList.Free;
41 RequestStream.Free;
42 ResponseStream.Free;
43 end;
44 end;

Post请求在网页中多使用List形式提交参数。

不过在一些API中规定了POST的请求格式为 JSON 格式或 XML,这是需要注意发起请求前需要先设置 ContentType 属性,使用Stream方式提交

已上面代码为例:

提交 JSON 格式:IdHttp.Request.ContentType :='application/json';

提交 XML 格式: IdHttp.Request.ContentType :='text/xml';

如未按要求格式提交,一般会返回 HTTP 1.1 / 415

Delphi IDHTTP控件:GET/POST 请求的更多相关文章

  1. HTTP 常见异常状态及Delphi IDHTTP 控件处理方式

    以下部分为网上查找,部分为工作中整理 200:请求成功 202:请求被接受,但处理尚未完成 302:请求到的资源在一个不同的URL处临时保存     处理方式:重定向到临时的URL(IDHTTP处理方 ...

  2. Delphi WebBrowser控件的使用(大全 good)

    Delphi WebBrowser控件的使用 WebBrowser控件属性:1.Application      如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDis ...

  3. <总结>delphi WebBrowser控件的使用中出现的bug

    Delphi WebBrowser控件的使用中出现的bug:  1.WebBrowser.Visible=false:Visible属性不能使WebBrowser控件不可见,暂时用 WebBrowse ...

  4. 修改Delphi工具控件的默认字体

    修改Delphi工具控件的默认字体: 注册表: Delphi 6:    HKEY_CURRENT_USER\Software\Borland\Delphi\6.0Delphi 7:    HKEY_ ...

  5. Delphi TcxtreeList控件说明 转

    Delphi TcxtreeList控件说明   树.cxTreeList 属性: Align:布局,靠左,靠右,居中等 AlignWithMargins:带边框的布局 Anchors:停靠 (akT ...

  6. delphi按钮控件的default属性

    delphi按钮控件的default属性用于设置默认命令按钮,.设置为true时,按[Enter键]相当于用鼠标单击了该按钮 .窗口中如果有多个按钮的default是true的话,就根据tabinde ...

  7. Delphi fmx控件在手机滑动与单击的问题

    Delphi fmx控件在手机滑动与单击的问题 (2016-03-08 10:52:00) 转载▼ 标签: it delphi 分类: Delphi10 众所周知,fmx制作的app,对于象TEdit ...

  8. Delphi maskedit控件的掩码含义及用法方法

    Delphi maskedit控件的掩码含义及用法方法   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  9. Delphi StringGrid控件的用法

    Delphi StringGrid控件 组件名称:StringGrid         ●固定行及固定列:  StringGrid.FixedCols:=固定行之数;  StringGrid.Fixe ...

随机推荐

  1. BZOJ1079或洛谷2476 [SCOI2008]着色方案

    一道记忆化搜索 BZOJ原题链接 洛谷原题链接 发现对于能涂木块数量一样的颜色在本质上是一样的,所以可以直接压在一个状态,而这题的数据很小,直接暴力开\(6\)维. 定义\(f[a][b][c][d] ...

  2. JDesktopPane JInternalFrames

    通常 JInternalFrames 需要配合 JDesktopPane 一起使用. JInternalFrames 必须在 JDesktopPane 里面

  3. Java界面编程—事件的种类

    Java处理事件相应的类和监听接口大多位于 awt 包中. 在 java.swing.event 包中有专门用于 swing 组件的事件类和监听接口. awt 事件类继承自 AWTEvent,其超类是 ...

  4. MySQL8.0的安装与配置(Windows 10)

    MySQL的下载 进入MySQL官网 https://www.mysql.com/ 选择 DOWNLOAD 到页面底部找到 MySQL Community Edition (GPL) 找到MySQL ...

  5. 关于win10系统配置变量时,javac编译不出的原因:没用好百度!

    在上班时,用笔记本的win8系统成功配置了java环境,于是想把家里的台式也配置一下,可是配置出来后javac却出不来东东,我很费解,重新下载了2次,还是不行,于是就暂时放弃了.那时是17年12月25 ...

  6. appium获取package和activity

    输入命令adb shell dumpsys window w |findstr \/ |findstr name=然后在手机端打开app,电脑上按enter就即可显示 以微信为例子 appPackag ...

  7. mybatis学习六 parameterType 属性

    1. 在 XXXMapper.xml 中<select><delete>等标签的 parameterType 可以控制参数类型2. SqlSession 的 selectLis ...

  8. Peter的烟(水题测试2017082401&洛谷1150)

    题目链接:Peter的烟 这道题基本做法很水,不解释. #include<bits/stdc++.h> using namespace std; int main(){ int n,k; ...

  9. 如何为终端用提供更快的解决方案?让IT技术员具备更高的效率?

  10. gcc 库路径里同时有相同文件名的动态库和静态库

    找不到库的处理方案 有两种方法: 一.可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig(要有root权限才行). 二.把当前路径加 ...