Session 会话id问题:vf和开发人员控制台的id不同
我面临以下问题: 在加载visualforce页面时,我正在对内部salesforce页面进行http调用,但在这里我面临身份验证问题 若我从开发人员控制台运行相同的http调用,那个么我将获得成功的响应,但相同的代码不适用于visualforce页面。无法工作的原因是开发人员控制台中的会话id和visualforce域不同 对于获取会话id,我使用“UserInfo.getSessionId()” 我也尝试过{!$Api.Session_ID},但没有成功 我的控制器:Session 会话id问题:vf和开发人员控制台的id不同,session,salesforce,apex-code,visualforce,apex,Session,Salesforce,Apex Code,Visualforce,Apex,我面临以下问题: 在加载visualforce页面时,我正在对内部salesforce页面进行http调用,但在这里我面临身份验证问题 若我从开发人员控制台运行相同的http调用,那个么我将获得成功的响应,但相同的代码不适用于visualforce页面。无法工作的原因是开发人员控制台中的会话id和visualforce域不同 对于获取会话id,我使用“UserInfo.getSessionId()” 我也尝试过{!$Api.Session_ID},但没有成功 我的控制器: public with
public with sharing class HttpRequestForPage
{
public HttpRequestForPage()
{
requestForPage('https://ap1.salesforce.com/home/home.jsp');
}
public void requestForPage(String pageUrl)
{
HttpResponse responseOfPage;
String responseString;
HttpRequest request = new HttpRequest();
request.setMethod('GET');
request.setEndpoint('https://ap1.salesforce.com/home/home.jsp');
request.setHeader('Cookie', 'sid='+UserInfo.getSessionId());
try
{
responseOfPage = new Http().send(request);
}
catch(Exception e)
{
system.debug(e);
}
responseString = responseOfPage.getBody();
System.debug(responseString=='+responseString);
}
}
尝试使用授权标头,而不是为会话设置cookie
request.setHeader('Authorization','Bearer '+UserInfo.getSessionId());
您还需要在远程站点设置中将ap1.salesforce.com设置为端点
如果您是从Salesforce内部请求页面,则可以使用PageReference方法
PageReference home = new PageReference('https://ap1.salesforce.com/home/home.jsp');
blob homeblob = home.getContent();
string homeContent = homeblob.toString();