当我尝试访问代理服务器后面的salesforce API时,我无法这样做。当没有代理时,一切正常。
有没有办法在PHP代码中使用代理ID,用户名和密码设置代理详细信息,以允许我们的应用程序和salesforce API之间的通信。我在Java上发现了一些关于如何执行此操作的帖子,但没有在PHP中发布..
答案 0 :(得分:2)
这取决于您使用的是SOAP还是REST API,但PHP SoapClient和cURL库都支持代理。
对于SoapClient,文档说明:
对于HTTP身份验证,可以使用登录名和密码选项 供应凭证。用于通过代理建立HTTP连接 服务器,选项proxy_host,proxy_port,proxy_login和 proxy_password也可用。对于HTTPS客户端证书 身份验证使用local_cert和passphrase选项。一个 可以在身份验证选项中提供身份验证。该 身份验证方法可以是SOAP_AUTHENTICATION_BASIC (默认)或SOAP_AUTHENTICATION_DIGEST。
例如,这是某些sample code connecting to Salesforce using SOAP的简化摘录:
$soapOptions = array();
$soapOptions['proxy_host'] = "localhost";
$soapOptions['proxy_port'] = (int) 8080; // Use an integer, not a string
$soapOptions['proxy_login'] = "username";
$soapOptions['proxy_password'] = "password";
$this->sforce = new SoapClient($wsdlPath, $soapOptions);
对于cURL,请查看curl_setopt文档,其中包含多个代理选项。以下是一些sample code connecting to Salesforce using REST的简化摘录:
$ch = curl_init();
...
curl_setopt($ch, CURLOPT_PROXY, "localhost");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "username:password");
$chResponse = curl_exec($ch);