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

标签 java web-services soap wsdl salesforce

  • 我正在使用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/

相关文章:

java - 您如何在 eclipse 中设置一个 clojure 项目,以便在您单击运行时启动它?

java - WELD-000072 声明钝化作用域的托管 bean 必须具有钝化能力

soap - 我对 SOAP 命名空间感到困惑

java - Ant java 任务无法在 rt.jar 中找到类,但控制台中的 java 成功(且 JAVA_HOME 已正确设置)

java - 在 Java Applet 上捕获 WACOM 平板电脑事件

php - FEDEX 网络服务 wsdl 文件

java - 如何使用 Restful Web 服务使用两种 Web 方法进行两种不同的操作?

xml - 应该如何使用非 XML 数据表示在 RESTful 服务中提供链接?

php - 如何创建 PHP SOAP 请求和响应

php - 如何学习 SOAP ?