- 我正在使用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 中的几个位置。
- 在
xmlns:tns
属性中xmlns:tns="http://soap.sforce.com/schemas/class/orgNamespace/TestClass"
- 在
targetNamespace
属性中targetNamespace="http://soap.sforce.com/schemas/class/orgNamespace/TestClass"
- 在
soap:address
location
属性中location="https://na5.salesforce.com/services/Soap/class/orgNamespace/TestClass"
端点位置应该相当容易处理。您只需更改端点 URL 以在路径中包含组织命名空间即可。
targetNamespace 和 tns 别名将更难解析。最简单的选择可能是使用更新的命名空间从 WSDL 重新创建 jar。
关于java - Salesforce SOAP 连接命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617779/