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

        原此文帮助到大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript使用正则表达式

正则表达式(RegExp)也称规则表达式(regular expression),是非常强大的字符串操作工具,语法格式为一组特殊字符构成的匹配模式,用来匹配字符串。ECMAScript 3以Perl为基础规范JavaScript正则表达式,实现Perl 5正则表达式的子集。Ja…

2023年云计算发展趋势:生活的智能未来

目录 引言1 智能家居的崭新时代2 无人驾驶的崭新时代3 虚拟现实的扩展与改进4 人工智能的综合应用5 云计算的可持续性结语 引言 时光荏苒,科技的飞速发展已经成为当今社会的标志之一。在这个数字化时代,云计算已经成为推动技术革新和生活方式改变的关键…

uniapp subNvue 写的视频播放

文件下载地址(没会员的留下邮箱,有空就发过去) https://download.csdn.net/download/weixin_47517731/88500016https://download.csdn.net/download/weixin_47517731/88500016 1:在pages.json中配置视频播放页面 {/* 视频详情页面 */"path": "pag…

力扣每日一题 ---- 2918. 数组的最小相等和

贪心题(吐槽一下,最烦贪心题了,每次遇到没见过的就只能连蒙带骗) 好在本题比较容易发现 数组1 :3 2 0 1 0 数组2 :6 5 0 我们遇到这种题,先将小的凑成相同的,(我们预处理出来两个数组的分别的元素和和0的个…

vue3+ts 项目遇到的问题和bug

1.router中使用pinia报错 pinia.mjs:1709 Uncaught Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concep…

python爬虫怎么翻页 ?

首先,你需要安装相关的库。在你的命令行窗口中,输入以下命令来安装所需的库: pip install requests beautifulsoup4然后,你可以使用以下代码来爬取网页内容并翻页: package mainimport ("fmt""net/htt…

【沐风老师】3dMax快速平铺纹理插件QuickTiles教程

QuickTiles是3ds max的一个插件,允许您将常规瓷砖纹理转换为交互式纹理,就在mat.editor中。 换言之,您可以根据需要对任何纹理进行修改和重新创建:更改布局、瓷砖大小、格式、颜色、接缝、体积、随机化形状或纹理等等。 这种方法大…

打造高效的客服体系,就在于这个“专属链接”

想要追踪特定数据,但是得在数据库中大海捞针? 想要知道某个推广的效果,但是无法追踪? 想要获得个性化的报告,但是数据不够精准? 面对这些情况,只需要靠一条“专属链接”就能一一击破&#xff…

qt多线程例子,不断输出数字

dialog.h #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui->setupUi(this); }Dialog::~Dialog() {delete ui; }// 启动线程按钮 void Dialog::on_startButton_clicked() {//conn…

C#解析XML并反序列化为Model的方法

虽然现在json大行其道,但是xml格式依旧占据着广阔的编程世界,不管光伏锂电激光卫星汽车等等工业领域,基本上都是以xml为主,广大的.NET开发人员有很多被xml折磨的都要转java了,这篇小作文就来玩一种迅速完成xml到model的…

Hello Vue!

目录 前言 hello vue 为什么要new Vue(),而不能直接调用Vue()? Vue构造函数中的形参options template配置项 $mount()方法 前言 从此篇博客开始,将开启vue的学习,查缺补漏。 只要学计算机语言,那么hello xxx那一定是入门第一行代码了…

【深度学习】pytorch——Autograd

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 深度学习专栏链接: http://t.csdnimg.cn/dscW7 pytorch——Autograd Autograd简介requires_grad计算图没有梯度追踪的张量ensor.data 、tensor.detach()非叶子节点的梯度计算图特点总结 利用Autograd实…

vmware虚拟机设置静态ip之后无法联网

今天在vmware虚拟机设置静态ip,设置静态ip之后无法联网(ping),并且SecureCRT无法连接上虚拟机。 网卡参数配置没有问题,可是却发联网,ping网站也不通 显示未知的名称和服务,开始以为网管和DNS是…

注册虾皮买家号需要哪些资料?

注册虾皮买家号其实是很简单的,使用相应国家的手机号及对应的环境就可以注册了的,如果想要账号更方便使用,也可以绑定邮箱进行认证。 而如果想要使用shopee买家通系统进行自动化的注册,那么对于资料就有一定的要求了。 1、手机号…

【算法 | 模拟No.3】leetcode 38. 外观数列

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【Leetcode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

微服务-grpc

微服务 一、微服务(microservices) 近几年,微服这个词闯入了我们的视线范围。在百度与谷歌中随便搜一搜也有几千万条的结果。那么,什么是微服务 呢?微服务的概念是怎么产生的呢? 我们就来了解一下Go语言与微服务的千丝…

RDS for Mysql 到云数据库GaussDB

前言 该实验旨在指导用户使用DRS将RDS MySQL上的数据迁移到 GaussDB中。 本实验涉及数据复制服务DRS(Data Replication Service)、关系型数据库服务RDS(Relational Database Service)、GaussDB、数据管理服务DAS(Data…

从研发域到量产域的自动驾驶工具链探索与实践

导读 本文整理自 2023 年 9 月 5 日百度云智大会 - 智能汽车分论坛,百度智能云自动驾驶云研发高级经理徐鹏的主题演讲《从研发域到量产域的自动驾驶工具链探索与实践》。 全文中部段落附有演讲中 2 个产品演示视频的完整版,精彩不容错过。 (视频观看&…

Redis7--基础篇2(Redis的十大数据类型及常用命令)

1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库,我们所说的数据类型指的是value的数据类型,key的数据类型都是字符串。 1.1 字符串(String) string是redis最基本的类型,一个key对应一个val…

船舶数据采集与数据模块解决方案

标准化信息处理单元原理样机初步方案: 1)系统组成 标准化信息处理单元原理样机包含硬件部分和软件部分。 硬件部分包括集成电路板、电源模块、主控模块、采集模块、信息处理模块、通讯模块、I/O模块等。 软件部分包括协议统一标准化模块、设备互联互…