从网络服务生成Apex类
使用WSDL2Apex从网络服务生成Apex类
如果某个网络服务被定义在WSDL文件中,而Salesforce必须使用SOAP和网络服务进行通信,则这种情况在某些时候会为开发者带来很多麻烦。为了简化SOAP请求,可以使用Salesforce中提供的功能将此网络服务转化为Apex类。开发者可以通过此Apex类调用网络服务,而此Apex类可以自动生成和编译XML信息,省去了手动设置的麻烦。
假设已经有了一个WSDL文件,包含了网络服务的XML描述。在设置界面中,搜索“Apex 类”,点击“Apex 类”链接,即可进入Salesforce中所有Apex类的一览表。点击“从WSDL中生成”,在接下来的窗口中上传文件,并点击“分析WSDL”按钮,Salesforce会自动将WSDL中包含的网络服务生成Apex类。

从WSDL中会生成两个类,分别是用于同步和异步请求的,异步请求的类名比同步请求的类名前面多了“Async”。
使用从网络服务生成的Apex类
从WSDL生成的Apex类可以像正常的Apex类一样被开发者使用。当调用其中包含的函数时,便相当于发送了一个网络服务请求。
测试从网络服务生成的Apex类
在测试从网络服务中生成的Apex类中的函数时,因为单元测试函数无法调用真正的网络服务,所以开发者必须自己生成模拟的网络服务请求和结果。
Salesforce中提供了WebServiceMock接口和Test.setMock()函数来实现这一点。
示例:测试网络服务类
假设已经从WSDL文件中生成了一个Apex类,名叫“ExampleServiceClass”,其中包含了某个函数“ExampleService()”。
开发者新建了一个Apex类“ExampleClass”,其中包含了某个函数“DoSomething()”来调用“ExampleServiceClass”类中的“ExampleService()”函数并处理结果。现在要对“DoSomething()”函数编写单元测试代码。
- 首先建立一个全局的类,实现WebServiceMock接口,用于模拟网络服务的请求。代码如下:
@isTest
global class ServiceCalloutMock implements WebServiceMock {
// 实现接口中的doInvoke()函数
global void doInvoke(
Object stub,
Object request,
Map<String, Object> response,
String endpoint,
String soapAction,
String requestName,
String responseNS,
String responseName,
String responseType) {
// 接下来,调用网络请求的Apex类中的函数,得到结果,并将结果赋值到参数中的response中。
// response将作为网络请求的回应被用到单元测试中。
// ...
}
}
- 建立单元测试函数。代码如下:
@isTest
static void DoSomethingTest() {
// 调用刚才建立的模拟网络服务请求的类
Test.setMOck(WebServiceMock.class, new ServiceCalloutMock());
// 测试函数,得到结果。模拟的网络服务请求结果会在这里被使用,取代了调用真正的网络服务
String result = ExampleClass.DoSomething();
// System.assertEquals(..., result);
}
从网络服务生成Apex类的更多相关文章
- 异步 Apex 类
异步Apex类 一个Apex类可以定义为异步类,用于异步执行. 异步类可以通过多种方式实现: Future注解 批处理 Queueable接口 Schedulable接口 Future注解 使用Fut ...
- Salesforce Apex页面中调用远端网络服务
本文介绍了Salesforce Apex页面中调用远端网络服务的实现过程. ### 注册远端网络服务 在使用Apex代码调用远端网络服务之前,首先需要在Salesforce中注册远端网络服务地址, 本 ...
- 关于IIS寄宿WCF服务,客户端不能生成代理类
我在使用VS2010写好WCF的Web服务后,部署在IIS7.0上,可以在IE9上进行访问,并且能显示XML数据,如下图 然后我在项目的客户端进行服务的添加引用,如下图 VS2010自动生成代理类,但 ...
- Neutron三层网络服务实现原理
Neutron 对虚拟三层网络的实现是通过其 L3 Agent (neutron-l3-agent).该 Agent 利用 Linux IP 栈.route 和 iptables 来实现内网内不同网络 ...
- socket网络服务实战
一.epoll模型的构建 由于网络服务高并发的需求,一般socket网络模型都采用epoll模型,有关epoll模型的原理在相关论坛中有许多讲述,在此不做重复讲解,主要讲一讲epoll模型的封装实现. ...
- 按WSDL信息手动生成代理类
命令行: wsdl /language:c# /n:Entity /out:C:\Users\mengxianming\Desktop\Centrex_IMS_Client.cs C:\Users\m ...
- [apue] 一个工业级、跨平台的 tcp 网络服务框架:gevent
作为公司的公共产品,经常有这样的需求:就是新建一个本地服务,产品线作为客户端通过 tcp 接入本地服务,来获取想要的业务能力. 与印象中动辄处理成千上万连接的 tcp 网络服务不同,这个本地服务是跑在 ...
- 一个工业级、跨平台、轻量级的 tcp 网络服务框架:gevent
前言 作为公司的公共产品,经常有这样的需求:就是新建一个本地服务,产品线作为客户端通过 tcp 接入本地服务,来获取想要的业务能力.与印象中动辄处理成千上万连接的 tcp 网络服务不同,这个本地服务是 ...
- JSON生成c#类代码小工具
JSON生成c#类代码小工具 为什么写这么个玩意 最近的项目中需要和一个服务端程序通讯,而通讯的协议是基于流行的json,由于是.net,所以很简单的从公司代码库里找到了Newtonsoft.dll( ...
随机推荐
- webrtc笔记(2): 1对1实时视频/语音通讯原理概述
开始正文之前,先思考1个问题:2个处于不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时视频/语音通讯,难点在哪? 至少得先搞定下面2个问题: 1.彼此要了解对方支持的媒体格式 ...
- vue项目使用Ueditor富文本编辑器总结
我使用的是前端大佬封装的vue-ueditor-wrap插件,结合ueditor本身的压缩包开发的. 1.下载vue-ueditor-wrap: npm install vue-ueditor-wra ...
- docker安装和配置Grafana
目录 安装 docker 启动 配置 配置域名和端口 配置ldap 配置邮箱 添加数据源 创建dashboard 配置alert 安装 docker 启动 先普通启动,然后把配置文件导出来,修改配置文 ...
- C# 爬虫相关的、可供参考的开源项目
1. Abots https://github.com/sjdirect/abot/ 2. DotnetSpider https://github.com/dotnetcore/DotnetSpide ...
- Hyper V NAT 网络设置 固定IP / DHCP
Hyper V 默认的Default Switch同时支持了NAT网络以及DHCP,虚拟机能够访问外网. 但使用过程中发现这个IP网段经常变化,而且Hyper V没有提供管理其NAT网络与DHCP的图 ...
- powershell与linux bash对比
转自Github/Powershell Bash PowerShell Description ls dir, Get-ChildItem List files and folders tree di ...
- Spring笔记01
spring 第一章 Spring模块规划图 核心架包 spring-beans-4.0.0.RELEASE. spring-core-4.0.0.RELEASE. spring-context-4. ...
- 从webkit内核简单看css样式和css规则优先级(权重)
目录 webkit中样式相关类及类间关系 样式规则匹配 权重(优先级)计算 权重相同时的覆盖原则 webkit中样式相关类及类间关系 资料来源: <webkit技术内幕> 结构相关类: 1 ...
- python3匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外, ...
- vue学习指南:第一篇 - vue的介绍
三大主流框架: 1. Vue.js 是目前最火的一个前端框架,react是最流行的前端框架 (react除了开发网站,还可以开发手机app,Vue语法也是可以用于手机App开发的,需要借助于wexx) ...