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

【无标题】第九章 从 Web 客户端指定自定义传输

文章目录

  • 第九章 从 Web 客户端指定自定义传输
  • 从 Web 客户端指定自定义传输
  • 背景
  • 为 Web 客户端定义自定义传输

第九章 从 Web 客户端指定自定义传输

从 Web 客户端指定自定义传输

默认情况下,如果使用 Web 客户端,Web 客户端将使用 HTTPSOAP 消息传输到 Web 服务并接收响应。可以定义并使用自己的传输类。

背景

为了与其使用的 Web 服务进行通信, Web 客户端需要一个传输类。传输类包含与通信相关的参数、属性和方法。整体通信工作方式如下:

  1. 运行 Web 客户端代理方法时,Web 客户端实例会检查其 Transport 属性的值。

如果此属性为空,则 Web 客户端实例将使用自身作为传输类实例。可以将 Transport 属性设置为其他合适类的实例(如果已定义此类)。

  1. Web 客户端实例执行传输类的 DoSOAPRequest() 方法,并传递以下参数:

a. Web 客户端类的 OREF

b. 指定 SOAP 操作的字符串。

c. 包含以 UTF-8 编码的请求的流。

d. (通过引用)包含响应的流。

  1. Web 客户端实例检查结果的状态并采取相应行动。

对于 HTTP 传输,DoSOAPRequest() 方法包括以下逻辑:

  1. 创建请求对象(%Net.HttpRequest 的实例)并设置其属性。此处,该方法使用 Web 客户端实例的属性值,特别是 HttpRequestHeaderCharset 和其他与 HTTP 相关的属性。
  2. 遍历 SOAP 请求中的标头并初始化请求对象中的标头。
  3. 执行请求对象的Post()方法,这是一个适合HTTP传输的动作。
  4. 获取响应并返回。

重要提示:请勿直接使用 %SOAP.WebClientDoSOAPRequest() 方法。我们无法保证其行为或未来操作。上述摘要仅作为一般提示提供。

为 Web 客户端定义自定义传输

要使 Web 客户端能够使用自定义传输,请定义自定义传输类。然后,在创建 Web 客户端实例后,将其 Transport 属性设置为等于传输类的实例。

transport类别的要求如下:

  • 该类必须是可实例的(即非抽象的)。
  • 该类必须实现如下所述的 DoSOAPRequest() 方法。

DoSOAPRequest() 方法应将请求传输到 Web 服务并获取响应。此方法的签名必须如下:

Method DoSOAPRequest(webClient,action,requestStream, responseStream) As %Status 
  • webClientWeb 客户端类的 OREF
  • action%String,它指定了 SOAP 操作。
  • requestStream 是包含以 UTF-8 编码的请求的流。
  • responseStreamDoSOAPRequest() 用于写入响应的参数中的 %FileBinaryStream 此流必须包含 ?xml 指令的编码属性指定的字符集中的数据。建议使用 UTF-8

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 钢板现货:A572Gr60和SA572Gr60材质分析、A572Gr60和SA572Gr60简介
  • fetch 在实际项目中的思考
  • 2024华为OD机试真题- 求字符串中所有整数的最小和-(C++/Python)-C卷D卷-100分
  • 中国联通在国外最大的综合电信服务枢纽
  • 【算法模板】数据结构:单调栈
  • vue2和vue3项目使用signalr插件,前后端如何配合的
  • 大语言模型有什么用途?
  • 计算机网络17——IM聊天系统——客户端核心处理类框架搭建
  • XV6——锁与并发
  • AI技术在招聘数据分析洞察中的作用
  • haproxy总结与实验
  • sgetrf M N is 103040 时报错,这是个bug么 lapack and Openblas the same,修复备忘
  • 网站证书过期导致WordPress后台无法登录问题解决,页面样式丢失
  • EMQX Platform Snowflake:构建可再生分布式能源的智慧未来
  • 了解LVS,配置LVS
  • Angular数据绑定机制
  • canvas绘制圆角头像
  • E-HPC支持多队列管理和自动伸缩
  • flutter的key在widget list的作用以及必要性
  • HTTP 简介
  • HTTP请求重发
  • Joomla 2.x, 3.x useful code cheatsheet
  • miaov-React 最佳入门
  • Node 版本管理
  • PHP 7 修改了什么呢 -- 2
  • PHP面试之三:MySQL数据库
  • spring boot 整合mybatis 无法输出sql的问题
  • 创建一个Struts2项目maven 方式
  • 电商搜索引擎的架构设计和性能优化
  • 对超线程几个不同角度的解释
  • 聊聊flink的BlobWriter
  • 前端工程化(Gulp、Webpack)-webpack
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 【云吞铺子】性能抖动剖析(二)
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #Linux(make工具和makefile文件以及makefile语法)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (9)目标检测_SSD的原理
  • (C#)一个最简单的链表类
  • (LeetCode 49)Anagrams
  • (Python第六天)文件处理
  • (搬运以学习)flask 上下文的实现
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)Activiti-modeler中文支持
  • (算法)大数的进制转换
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)RocketMQ初步认识
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)使用VMware vSphere标准交换机设置网络连接