使用命名凭据测试RESTAPI调用

使用命名凭据测试RESTAPI调用,rest,salesforce,apex,apex-code,Rest,Salesforce,Apex,Apex Code,我正在尝试使用命名凭据测试Salesforce的API调用。我已经设置了命名凭据和OAuth提供程序,并且能够在命名凭据中快速测试身份验证 我试图编写Apex类,看看是否可以从restapi检索记录,但我不知道如何测试匿名执行 public with sharing class RetrieveD365Data { public RetrieveD365Data() { Http http = new Http(); HttpRe

我正在尝试使用命名凭据测试Salesforce的API调用。我已经设置了命名凭据和OAuth提供程序,并且能够在命名凭据中快速测试身份验证

我试图编写Apex类,看看是否可以从restapi检索记录,但我不知道如何测试匿名执行

public with sharing class RetrieveD365Data {
    public RetrieveD365Data() {
              Http http = new Http();
              HttpRequest req = new HttpRequest();
              req.setEndpoint('callout:Dev_D365/data/Customers');
              req.setMethod('GET');
              req.setTimeout(30000);
              HttpResponse res = http.send(req);
              System.debug('Response Body===========' + res.getBody());
    }
}
我试图在开发人员控制台上运行此代码

但我得到的是第6行,第1列 System.Callout异常:无法通过代理进行隧道。代理返回“HTTP/1.1 503服务不可用”。请帮助我,因为我是Salesforce的新手


我只是感到困惑,因为在设置命名凭据时身份验证成功(表示身份验证状态)。但是使接收错误的调用不可用

直接从构造函数中调用不是一个好主意。如果您处于不允许调用的上下文中(在触发器中-您需要@future方法,例如,在批处理作业中,您必须实现AllowCallouts接口),该怎么办。最好采用单独的方法


但是查看您的代码,您应该能够简单地转到
newretrieved365data()在开发人员控制台中?

请查看我更新的问题。我试图在DEV控制台的executeanonymous窗口中执行代码,但得到了503错误。但是有了命名的凭据,我看到状态为authenticated。它应该可以工作,您可能需要进行实验,阅读您正在调用的服务的文档。您使用了“命名主体”,所以整个组织的用户名/密码/无论什么都是相同的,对吗?例如,您可以试用Apex或Postman提供的手动OAuth2消息(使用包含用户名、密码、客户机id、密码等内容的JSON正文发布到特定url)吗。如果不知道这是什么服务,很难判断。OAuth是唯一的选择吗?可以通过证书建立相互信任吗?看看调试日志中生成了什么URL,也许它去错了地址?