【delphi】中 TNetHTTPClient 注意事项-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、TNetHTTPClient 是什么

用于管理 HTTP 客户端的组件。相当于indy中的TidHTTP控件是实现HTTP请求的客户端控件。

二、TNetHTTPClient 需要注意什么

需要注意的是几个Timeout因为我们使用TNetHTTPClient控件的时候首先就是需要和服务器连接连接成功过后就需要和服务器进行通信那么在这个过程中最容易忽略或者最容易出现问题的就是超时处理比如服务器当了连接不上那么如果此时你的超时处理没有做好那么你的程序一定会出现你的非预料结果对于移动端App来说很可能出现直接闪退。因为我最近在开发App的时候就遇到了这样的问题所以记录下来让大家少走些弯路少踩坑

TNetHTTPClient 涉及到的timeout

序号超时参数说明
1ConnectionTimeout

        代表 HTTP 客户端连接建立前的超时时间。

        使用 ConnectionTimeout 以毫秒为单位设置或获取客户端连接超时值。默认值为 1 分钟。

平台

        WIndows     √支持

        OS X            X不支持

        IOS              X不支持

        Android        √支持

2ResponseTimeout

        代表给定 HTTP 客户端请求中部分 HTTP 响应之间的最大超时值。

        使用 ResponseTimeout 可以设置或获取以毫秒为单位的最大响应超时值。默认值为 1 分钟。

平台

        WIndows      √支持

        OS X            √支持

        IOS              √支持

        Android        √支持

3SendTimeout说明文档中并没有说明这个参数是什么意思。但是从字面意思来理解是发送超时的意思。经过测试似乎没有什么作用

需要特别注意的是

  1. ConnectionTimeout 并不支持IOS如果在IOS系统上设置了ConnectionTimeout是没有效果的但是在android上是可以的。
  2. 那么如果服务器故障无法连接在IOS上就应该使用ResponseTimeout参数进行超时处理。

        以上是我最近在开发移动端APP的时候发现Android和IOS上程序表现并不一致而且当时并没有仔细阅读帮助文档就是从字面意思理解这几个超时导致我花费了时间自己测试出来 ConnectionTimeout 并不支持IOS。最后在IOS上使用的是ResponseTimeout属性。其实遇到问题还是阅读下官方的帮助文档会更改好不能凭经验或者字面意思理解特别是在跨平台系统开发上。

        原此文帮助到大家

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6