Salesforce soap连接命名空间问题

时间:2016-01-05 17:30:09

标签: java web-services soap wsdl salesforce

  • 我正在使用soap API来使用Java调用Apex服务方法。
    • 我已经使用合作伙伴API连接到salesforce org。
    • 我为全局类准备了WSDL,我已经编写了webservice方法。
    • 我已经转换了那个WSDL文件Jar文件。
    • 现在我将jar文件添加到我的项目中并触发了调用webservice方法的事件。
    • 工作正常,但是当我从包装组织中解雇该事件时,我有一个例外。

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

这是我的示例代码。

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

**这对我的开发者组织来说很好但是,它在Package org **中引起了一个问题

**注意:** WSDL文件是从开发人员组织生成的。

1 个答案:

答案 0 :(得分:1)

那么,你有一个使用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属性中
      

    位置= “https://na5.salesforce.com/services/Soap/class/orgNamespace/TestClass”

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

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

    另请参阅:Adding Namespace to Webservice Class Name