当前位置: 首页 > news >正文

【delphi】中 TNetHTTPClient 注意事项

一、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属性。其实遇到问题还是阅读下官方的帮助文档会更改好,不能凭经验或者字面意思理解,特别是在跨平台系统开发上。

        原此文帮助到大家!

相关文章:

  • springboot(ssm 高校教师电子名片系统 Java(codeLW)
  • 【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】
  • C++ http协议POST body raw 字段向服务器发送请求
  • Linux Vim批量注释和自定义注释
  • flink的CoProcessFunction使用示例
  • 临界资源,临界区,通信的干扰问题(互斥),信号量(本质,上下文切换问题,原子性,自身的安全性,操作)
  • AI搞钱——工具篇之视频、音频转文字
  • FreeRTOS学习笔记——SysTick中断
  • 什么是API接口测试?这可能是全网最全的教程了!
  • 动态规划31(Leetcode188买卖股票的最佳时机4)
  • linux安装jdk和weblogic易错点
  • 首次分享一波
  • Qt中Opencv转Qimage出现重影或者颜色不对
  • linux 3.13版本nvme驱动阅读记录二
  • maven 项目添加 git-hook 脚本,约束提交内容格式
  • python3.6+scrapy+mysql 爬虫实战
  • 【css3】浏览器内核及其兼容性
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • codis proxy处理流程
  • Effective Java 笔记(一)
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • leetcode98. Validate Binary Search Tree
  • Linux中的硬链接与软链接
  • Python 反序列化安全问题(二)
  • React-redux的原理以及使用
  • 初识MongoDB分片
  • 多线程事务回滚
  • 聊聊redis的数据结构的应用
  • 码农张的Bug人生 - 见面之礼
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 深度学习入门:10门免费线上课程推荐
  • 使用API自动生成工具优化前端工作流
  • 一份游戏开发学习路线
  • 湖北分布式智能数据采集方法有哪些?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (2.2w字)前端单元测试之Jest详解篇
  • (Forward) Music Player: From UI Proposal to Code
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (三分钟)速览传统边缘检测算子
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .NET delegate 委托 、 Event 事件
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • ??在JSP中,java和JavaScript如何交互?
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @ConditionalOnProperty注解使用说明
  • @RequestBody与@ModelAttribute