Powershell Salesforce SOAP API SessionHeader 类型转换问题

2024-04-06

您好,我在设置 SessionHeaderValue 时遇到问题。我的代码基于 c#.Net。登录正常,我在登录结果中收到 serviceUrl 和 sessionId,但无法获取会话标头中设置的会话 ID

这是代码

$uri = "c:\installs\sforce.wsdl"
$username = "username"
$password = "password"
# Proxy
$service = New-WebServiceProxy -Uri $uri -Namespace sforce -UseDefaultCredential
# Login
$loginResult = $service.login($username, $password)
$service.Url = $loginResult.serverUrl
$service.SessionHeaderValue = New-Object sforce.SessionHeader

这是我得到的错误,有点奇怪。

异常设置“SessionHeaderValue”:“无法将类型“sforce.SessionHeader”的“sforce.SessionHeader”值转换为类型“sforce.SessionHeader”。”

我已经玩了几个小时了,但已经没有想法了。

任何帮助表示赞赏。

Anthony


真正的问题是你不能重用$service。你的实例$service仅适用于登录,仅此而已。我认为这是由于 New-WebServiceProxy 的工作方式造成的。检查这个小脚本:

$uri = 'file://C:\projects\CRM\SalesForce\Integration\enterprise.xml'
$api = new-webserviceproxy -uri $uri -NameSpace SalesForce

$api.GetType().Module.Assembly.ManifestModule.ScopeName

$api = new-object SalesForce.SforceService.ScopeName
$api.GetType().Module.Assembly.ManifestModule

如果您要运行此脚本(当然您需要替换您自己的 WSDL),您会看到类似这样的内容(DLL 是动态的,因此名称会有所不同):

mhgl0l5w.dll 
vzecopaq.dll

请注意,不仅 $api 的对象引用不同,而且 New-WebServiceProxy 创建的动态程序集也不同,这不是您所期望的。这就是你的演员阵容失败的原因;具有相同名称的对象是不同的,因为它们来自不同的动态程序集。我不确定为什么会出现这样的行为 - 如果这是 New-WebServiceProxy 的特性,或者以某种方式存在于 SalesForce 的 WSDL 中。

解决方案实际上非常简单。在 New-WebServiceProxy 生成的命名空间中重新创建服务对象,如下所示:

$uri = "c:\installs\sforce.wsdl"
$username = "username"
$password = "password"
# Proxy
$service = New-WebServiceProxy -Uri $uri -Namespace sforce -UseDefaultCredential

# Login
$loginResult = $service.login($username, $password)

$service = New-Object sforce.SforceService
$service.Url = $loginResult.serverUrl
$service.SessionHeaderValue = New-Object sforce.SessionHeader
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell Salesforce SOAP API SessionHeader 类型转换问题 的相关文章

随机推荐

  • 从返回的 Oracle 时间戳列检索数据

    我们有一个使用 Oracle 时间戳的 ColdFusion 8 Linux 应用程序 我们刚刚从 10g 转换为 Oracle 11g 现在在数据源上使用 Oracle 的瘦客户端 我们在选择时间戳列的应用程序中遇到错误 看起来好像是一个
  • Python3.3类型=文件名错误

    import sys import argparse parser argparse ArgumentParser description blah blah parser add argument reference file type
  • iOS 4 阻止并保留计数

    我刚刚开始使用街区和 Grand Central Dispatch 有人告诉我 并在苹果文档 http developer apple com library ios documentation cocoa Conceptual Block
  • 在 Angular 中发生 httpClient 超时时调用函数 [重复]

    这个问题在这里已经有答案了 我有一个函数在服务器上发送一些超时请求 每个请求如下 this httpClient get url headers headers timeout 30000 subscribe response gt err
  • 使用 PHP 的 DateTime 类验证有效日期

    以下是我之前验证日期的方法 我也有自己的函数来转换日期格式 但是 现在使用 PHP 的 DateTime 类 因此不再需要它们 我应该如何最好地使用 DataTime 验证有效日期 还请告诉我您是否认为我应该首先使用 DataTime 谢谢
  • 为什么Cocoa里没有队列?

    我最近发现 Cocoa 中没有内置队列 在本例中为 Touch 为什么不 队列是计算机编程中最基本的数据结构之一 我看到有人建议使用NSMutableArray 但这对于弹出 出列来说效率极低 因为它需要删除索引 0 处的对象 这会将所有元
  • django:预取 GenericForeignKey 的相关对象

    假设我有一个模型Box with a GenericForeignKey指向任一Apple实例或Chocolate实例 Apple and Chocolate 反过来 有外键Farm and Factory 分别 我想显示一个列表Boxes
  • Swift 4 用变量作为键解析 json [重复]

    这个问题在这里已经有答案了 我试图了解苹果添加的新 Codable 功能 但我无法解决这个问题 我有一个 json 输出 如下所示 Afpak id 1 race hybrid flavors Earthy Chemical Pine ef
  • 无法找到请求的.Net Framework 数据提供程序 - SQLite

    我认为 sqlite 很简单 但它给我带来了困难 我只想创建一个可以使用 ado net 实体数据类连接到 sqlite 数据库的应用程序 我在运行 Windows XP 的虚拟计算机上测试应用程序时遇到此问题 该应用程序在我当前的计算机以
  • iOS 内存管理——其他进程 RAM 增加

    我有一个使用几个的应用程序UIViewControllers with SKScenes里面有一些大图像和ObjectAL http kstenerud github io ObjectAL for iPhone 对于声音 按下几个视图控制
  • 调用超级构造函数

    我有一个自定义异常类 如下所示 case class CustomException errorMsg String extends Exception error String 当我捕获异常时 我所需要的就是抛出自定义异常并将错误消息传递
  • 将数组转换为链接列表 - 来自 Eloquent Javascript

    这是书中我无法理解的挑战之一 或者我的大脑无法分解它 这是解决函数 function arrayToList array var list null for var i array length 1 i gt 0 i list value
  • 如何检查调用堆栈

    是否可以看到CallStackMS Access 2003 的 VBA 中 也就是说 是不是可以从什么看出procedure or function其他function被称为 运行时 查看菜单 gt 调用堆栈 或按 CTRL L
  • XSL:避免将命名空间定义导出到生成的 XML 文档

    我想从一些 XML 文件中获取数据并将它们转换为新的 XML 文档 但是 我不希望 XSLT 中命名空间的定义出现在结果文档中 换句话说 source
  • ng-if - 检查空值

    我有一个循环遍历数据集并确定 href 的文件夹设置 我对每个选项都有一个 ng if 但我需要对其中一个 ng if 添加检查 我需要一种方法来检查值是否为空 我用过类似的东西 ng if shortcut SAM3Link 这样做的问题
  • 关联查询:select where条件不是max(内部查询中的条件)

    我试图选择 userName 和 groupId 重复的所有行 并且 userId 不是该 userName groupId 组合的最大 userId 到目前为止 这是我的代码 select from userTable u where e
  • 如何在linux终端上一行编译并运行?

    每次编译并运行 c 文件时 我都必须输入 gcc 文件名 c a out 我不想用两行来完成此操作 如何在linux终端上用一行来编译和运行 Try gcc filename c a out 如果第一个命令成功 它仅运行第二个命令 看htt
  • 想要通过 Activity android 来运行和停止服务

    我想知道是否可以做到这一点 我想实现一个服务 该服务将在活动启动时调用 并应定期运行 当我通过关闭或按回按钮来停止活动时 该服务应停止 并且警报管理器不应调用活动重新开始前的服务 我还想发送一些服务可以运行的数据并将结果返回给活动 目前我正
  • 有没有办法以编程方式读取/访问 Android 中的电子邮件或收件箱?

    有没有办法以编程方式读取 访问 Android 中的电子邮件或收件箱 据我所知 无法通过默认的 Gmail 应用程序以编程方式访问电子邮件 您最好的选择是找到一些 POP 或 IMAP 库 并将其集成到您的应用程序中 通过输入他们的电子邮件
  • Powershell Salesforce SOAP API SessionHeader 类型转换问题

    您好 我在设置 SessionHeaderValue 时遇到问题 我的代码基于 c Net 登录正常 我在登录结果中收到 serviceUrl 和 sessionId 但无法获取会话标头中设置的会话 ID 这是代码 uri c instal