让我设置场景:Salesforce的PHP SOAP API - 无法获取定制的WebService工作
我是一个PHP开发人员,需要从一个Web表单需要的信息,并将其发送到客户的Salesforce。起初,我认为它和使用Web2Lead一样简单。然而,客户有一位Salesforce开发人员。
内部开发者已将我的partner.wsdl
和CatalystWebservice.wsdl
文件以及登录详细信息发送到他们的沙箱以运行所有这些。内部开发人员基本上说我需要使用Salesforce的SOAP API,并且一旦连接并登录,我需要拨打->makeContact("FormField1", "FormField2", "etc...");
因此,花了一整天的时间尝试很多事情并遇到许多问题后,我终于撞到了墙上不能爬。这里是我现在使用的PHP代码:
<pre>
<?php
define("SOAP_CLIENT_BASEDIR", "../soapclient");
$USERNAME = '******@********' ;
$PASSWORD = '******************************' ;
require_once (SOAP_CLIENT_BASEDIR.'/SforcePartnerClient.php');
require_once (SOAP_CLIENT_BASEDIR.'/SforceHeaderOptions.php');
try {
$mySforceConnection = new SforcePartnerClient();
$mySoapClient = $mySforceConnection->createConnection(SOAP_CLIENT_BASEDIR.'/partner2.wsdl.xml');
$loginResult = $mySforceConnection->login($USERNAME, $PASSWORD);
$location = $mySforceConnection->getLocation();
$session_ID = $mySforceConnection->getSessionId();
$client = new SoapClient(SOAP_CLIENT_BASEDIR.'/CatalystWebservice.wsdl.xml');
$sforce_header = new SoapHeader("http://soap.sforce.com/schemas/class/CatalystWebservice", "SessionHeader", array("sessionId" => $session_ID));
$client->__setSoapHeaders(array($sforce_header));
$client->makeContact("*****", "*****", "Address1", "Address2", "London", "****", "[email protected]****", "", "07891236456", "New Build Homebuy", "This is my question\n\nAnd an other line", "1", "Test");
} catch (Exception $e) {
print_r($e);
}
?>
</pre>
我已经为此列出了敏感信息。当我运行上面的代码中,我得到以下输出:
SoapFault Object
(
[message:protected] => UNKNOWN_EXCEPTION: An unexpected error occurred. Please include this ErrorId if you contact support: ***********-*** (***********)
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /home/******/public_html/********/test/partner.php
[line:protected] => 23
[trace:Exception:private] => Array
(
[0] => Array
.....
而且CatalystWebservice.wsdl.xml file
将在内部开发人员已经开发出在C#中的东西,以测试他的WebService和它的作品完美的罚款,因此必须有一些我我做得不对。我做错了什么?
有没有什么办法可以包括它的生成和发送XML的转储,与C#版本相比? (例如,使用像Fiddler这样的本地代理)这会让你知道从哪里开始寻找。 – 2012-02-24 18:29:29
另一件需要检查的是你是否传入了安全令牌(附加到密码中) - 如果没有,你也需要这样做。 – 2012-02-25 02:44:12
我可能会先使用嗅探器来捕获您生成的XML并将其与开发人员进行比较。你得到的错误是来自SFDC的“错误的错误” - 通常是一个平台级别的未处理的异常 - 在这种情况下,可能确实意味着某些东西相当混乱,比如不符合的XML,错误的编码等。 – jkraybill 2012-02-26 22:54:31