Salesforce soap连接命名空间问题 我正在使用一个soapapi来使用Java调用Apex服务方法。 我已经使用partner API连接到salesforce组织 我已经为编写webservice方法的全局类准备了WSDL 我已经转换了WSDL文件Jar文件 现在,当我将jar文件添加到我的项目中并触发webservice方法调用的事件时 它的工作很好,但当我从包组织触发该事件时,我得到了一个例外

Salesforce soap连接命名空间问题 我正在使用一个soapapi来使用Java调用Apex服务方法。 我已经使用partner API连接到salesforce组织 我已经为编写webservice方法的全局类准备了WSDL 我已经转换了WSDL文件Jar文件 现在,当我将jar文件添加到我的项目中并触发webservice方法调用的事件时 它的工作很好,但当我从包组织触发该事件时,我得到了一个例外,java,web-services,soap,wsdl,salesforce,Java,Web Services,Soap,Wsdl,Salesforce,问题 我知道这个问题,问题是名称空间,但我不知道如何解决它 这是我的示例代码 SoapConnection globalUtilConnection = Connector.newConnection("",""); globalUtilConnection.getConfig().setAuthEndpoint(updatedServerURL.toString()); globalUtilConnection.getConfig().setServiceEndpoint(updatedSer

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

这是我的示例代码

SoapConnection globalUtilConnection = Connector.newConnection("","");
globalUtilConnection.getConfig().setAuthEndpoint(updatedServerURL.toString());
globalUtilConnection.getConfig().setServiceEndpoint(updatedServerURL.toString());
globalUtilConnection.setSessionHeader(activeSessionId);
globalUtilConnection.myWebServiceMethod();
**这对我的开发人员组织来说是很好的,但是,它在包组织中引起了一个问题**


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

那么,您有一个Apex类使用关键字将方法公开为SOAP web服务

当您将Apex类从developer edition组织带到打包组织时,它将获取打包组织的名称空间。这将更改您需要调用的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
    属性中 位置=”https://na5.salesforce.com/services/Soap/class/orgNamespace/TestClass”

  • 端点位置应该相当容易处理。您只需更改端点URL,将组织名称空间包含在路径中

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


    另请参见:

    您能发布错误日志吗?嗨,丹尼尔,谢谢您的快速回复。重新创建jar文件是个好主意。我已经确定它在包组织中运行良好。但是,在它不适用于开发者版组织之后。我们是否可以务实地处理名称空间,以便我可以将该代码用于developer edition组织和package edition组织。在合作伙伴api中,我使用了名为**setCalloption()的方法来处理名称空间<代码>连接.setCallOption(clientName,namespce)我可以实际更改此属性吗?是的,我在AuthEndpoint和ServiceEndpoint中动态添加了名称空间,但仍然遇到问题。我还检查了我的端点,它已使用namespcae正确更新。比如:在更新那个URL之后,我遇到了一个异常。com.sforce.ws.SoapFaultException:没有可用于请求{}的操作。那么,使用来自打包组织的WSDL的jar对该组织有效,但对开发人员版本组织无效?这似乎是正确的,因为名称空间位于SOAP请求的URL和targetNamespace中。我会尝试在JAR中的Java类之间进行比较。您可能会找到需要使用diff工具进行编程切换的内容。