我们正在httpRequest类的setEndpoint中设置一个intranet站点。当最后一行执行时,它返回一个错误,上面写着:System。CalloutException:读取超时。如果我通过任何其他网站,如www.google.com,这是非常好的工作。知道如何将端点URL设置为intranet站点吗?
string URL = 'some intranet website';
Http http = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint(URL);
req.setMethod('GET');
HttpResponse res = http.send(req);
Salesforce的所有请求都将从其众所周知的IP地址池中发出。
- 您的Intranet站点是否可以从外部访问?如果你可以自己在浏览器中粘贴URL,这并不意味着SF可以访问它!例如,您可以从家中访问您的内联网吗(无需使用VPN、Citrix等手段)
- 读取超时可以增加。将其设置为1分钟,然后看看会发生什么:
req.setTimeout(60000);
- 如果它仍然超时,我怀疑防火墙的配置只是为了解决问题。就像一个黑洞,不会返回你"未经授权,你有用户名和密码吗",没有任何东西表明这个地址实际上是有效的。请联系您的网络管理员,询问他是否可以将Salesforce IP列入白名单
- 当然,您可能不想让每个Salesforce客户都可以访问它。这取决于您是否需要通过一些身份验证机制,或者是否需要代理。将需要代理,特别是当您的intranet站点需要NTLM身份验证时(大致来说与Windows域有关——当然Salesforce服务器不会与您的intranet服务器位于同一LAN中)