繁体   English   中英

如何在Salesforce中构造正确的HttpRequest

[英]How to construct a correct HttpRequest in Salesforce

我正在Salesforce中开发一个应与服务器通信以获取一些数据的应用程序。 服务器地址是这样的http://192.168.115.22/

这是我在Apex代码中构造的HttpRequest对象是:

HttpRequest request = new HttpRequest();
String username = "myLogin", passwd = "myPassword";
String dataUrl = 'sli=on&fli=on&login=' + username + '&password=' + passwd + 'the rest of data';

request.setMethod('POST');
request.setEndpoint('http://192.168.115.22/Services/getLicenses');
request.setHeader('Content-Type','application/x-www-form-urlencoded');
request.setHeader('Content-Length', String.valueOf(dataUrl.length()));
request.setBody(dataUrl);

Http http = new Http();
HttpResponse response = http.send(request);

但是我得到的响应包含此错误:

The following error was encountered while trying to retrieve the URL: http://192.168.115.22/Licgen/Service/getLicensePackage?

    Access Denied.

我不知道正在构建的url有什么问题,当我在导航器中手动编写url时,我可以访问服务器。

请帮忙。

考虑到此问题已经被添加到端点的白名单中,我认为这与以下事实有关:192.168个IP地址通常表示网络中的本地IP地址。

因为您在网络上,所以很可能可以到达它,但是Salesforce无法从内部看到您的网络。 您将需要使用类似ngrok.com的工具,使您可以将本地计算机暴露于外部可用IP地址。

您也可以找到路由器的IP地址(如果您在家),并通过它转发到192.168.115.22本地计算机,以将其暴露给外界,但是ngrok.com让我度过了轻松得多的时光与我的应用程序进行集成测试。

有关192.168地址的一些信息

(添加此答案是因为我的其他答案可以合理地解决搜索上述相同问题的人)

此问题可能与Salesforce阻止外部呼叫未经授权的端点有关。 幸运的是,将端点添加到授权出站连接点的白名单很简单。

setup菜单选项下,然后在security菜单下,再次有一个名为“ remote site settings的菜单项。 在此选项中,您将看到允许您从Salesforce中访问的网站列表。 如果您的端点不在列表中,请添加它,您可能会得到不同的结果。

如果您已将其添加到白名单中,仍然存在问题,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM