[英]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讓我度過了輕松得多的時光與我的應用程序進行集成測試。
(添加此答案是因為我的其他答案可以合理地解決搜索上述相同問題的人)
此問題可能與Salesforce阻止外部呼叫未經授權的端點有關。 幸運的是,將端點添加到授權出站連接點的白名單很簡單。
在setup
菜單選項下,然后在security
菜單下,再次有一個名為“ remote site settings
的菜單項。 在此選項中,您將看到允許您從Salesforce中訪問的網站列表。 如果您的端點不在列表中,請添加它,您可能會得到不同的結果。
如果您已將其添加到白名單中,仍然存在問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.