Java httpRequest类中的intranet站点

Java httpRequest类中的intranet站点,java,salesforce,httprequest,apex-code,Java,Salesforce,Httprequest,Apex Code,我们正在httpRequest类的setEndpoint中设置一个intranet站点。当最后一行执行时,它返回一个错误,上面写着:System.Callout异常:读取超时。 如果我通过任何其他网站,如www.google.com,这一切都很好。知道如何将端点URL设置为intranet站点吗 string URL = 'some intranet website'; Http http = new Http(); HttpRequest req = new HttpR

我们正在httpRequest类的setEndpoint中设置一个intranet站点。当最后一行执行时,它返回一个错误,上面写着:System.Callout异常:读取超时。 如果我通过任何其他网站,如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地址池中发出

  • 您的内部网站是否可以从外部访问?如果你可以自己在浏览器中粘贴URL,这并不意味着SF可以访问它!例如,您可以在家访问您的内部网(不使用VPN、Citrix等手段)
  • 读取超时可以增加。将其设置为1分钟,看看会发生什么:
    req.setTimeout(60000)
  • 如果它仍然超时,我怀疑防火墙被配置为仅仅解决问题。就像一个黑洞,不会返回你“未经授权,你有用户名和密码”,没有任何东西表明这个地址实际上是有效的。联系您的网络管理员,询问他是否可以加入白名单
  • 当然,您可能不想让每个Salesforce客户都可以访问它。如果您需要通过一些身份验证机制,或者决定是否需要代理,则由您决定。特别是当您的intranet站点需要NTLM身份验证(大致说来与Windows域相关-当然Salesforce服务器不会与您的intranet服务器位于同一个LAN中)时,需要使用代理

  • 应该完全一样。事实上,应用程序不知道站点在哪里,它只是将请求转发给操作系统网络模块。检查网站是否可访问且不需要额外的东西(例如用户验证)。请记住,您的网站可能需要身份验证,但通过web访问时,会自动从Windows登录或单次登录检索您的凭据。如果我将该URL粘贴到浏览器中,页面加载正确,我可以看到该网站的内容。而且,如果我从家里访问这个网站,它不会打开。它只在办公室开放。。。不确定这里可以做什么…据我所知,HttpRequest apex代码将在salesforce服务器上执行,而不是在您的浏览器中执行。