gpt4 book ai didi

java - Salesforce SOAP 连接命名空间问题

转载 作者:行者123 更新时间:2023-11-30 07:41:36 25 4
gpt4 key购买 nike

  • 我正在使用soap API 通过Java 调用Apex 服务方法。
    • 我已使用合作伙伴 API 连接到 salesforce 组织。
    • 我已经为全局类准备了 WSDL,我在其中编写了 Webservice 方法。
    • 我已将该 WSDL 文件转换为 Jar 文件。
    • 现在,当我将该 jar 文件添加到我的项目中并触发调用 Web 服务方法的事件时。
    • 工作正常,但当我从包组织触发该事件时,我遇到了异常。

问题我知道这个问题,问题是命名空间,但不知道如何解决。

这是我的示例代码。

SoapConnection globalUtilConnection = Connector.newConnection("","");
globalUtilConnection.getConfig().setAuthEndpoint(updatedServerURL.toString());
globalUtilConnection.getConfig().setServiceEndpoint(updatedServerURL.toString());
globalUtilConnection.setSessionHeader(activeSessionId);
globalUtilConnection.myWebServiceMethod();

**这对我的开发者组织来说工作正常,但是,它在 Package 组织中引起了问题 **

**注意:** WSDL 文件是由开发者组织生成的。

最佳答案

因此,您有一个使用 webservice 的 Apex 类关键字将方法公开为 SOAP Web 服务?

当您将该 Apex 类从开发人员版本组织转移到打包组织时,它将获取打包组织的命名空间。这会更改您需要调用的 URL。

打包组织的命名空间将出现在 WSDL 中的几个位置。

  1. xmlns:tns 属性中

    xmlns:tns="http://soap.sforce.com/schemas/class/orgNamespace/TestClass"

  2. targetNamespace 属性中

    targetNamespace="http://soap.sforce.com/schemas/class/orgNamespace/TestClass"

  3. soap:address location 属性中

    location="https://na5.salesforce.com/services/Soap/class/orgNamespace/TestClass"

端点位置应该相当容易处理。您只需更改端点 URL 以在路径中包含组织命名空间即可。

targetNamespace 和 tns 别名将更难解析。最简单的选择可能是使用更新的命名空间从 WSDL 重新创建 jar。

另请参阅:Adding Namespace to Webservice Class Name

关于java - Salesforce SOAP 连接命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com