内部Salesforce URLへのHttp GETコールアウトの作成

私はSalesforce Visualforceページを持っています。これはXMLを出力します。

https:// [mynameserver]/Apex/[myxmlpage]

WSDLサービスを公開したいのですが、ここではこのページの内容をラップするだけです。そうするためには、これを行うための最も速く/最も安価な方法は、これにビジュアルフォースページへの内部HTTP
GETリクエストを作成し、サービスのコンテンツを返すことだけであると考えました。

Http h = new Http();
HttpRequest webReq = new HttpRequest();
webReq.setMethod('GET');
webReq.setEndpoint('https://[mynameserver]/Apex/[myxmlpage]');
HttpResponse res = h.send(webReq);
System.debug(res.getbody());

残念なことに私はこれを試すと、ログイン画面にリダイレクトされます。 HTTP
Calloutに認証を追加する必要があると思います。

誰もこれをやったことがあり、これを実現させるための最善の/最も簡単な方法の詳細がありますか?

ベストアンサー

ログインしたセッションから内部Salesforce URLへのコールアウトが必要な場合は、コードを次のように使用します。

Http h = new Http();
HttpRequest webReq = new HttpRequest();
webReq.setMethod('GET');
webReq.setHeader('Authorization','Bearer '+UserInfo.getSessionId());
// replace endpoint url
webReq.setEndpoint('https://na12.salesforce.com/udd/Site/siteDashboard.apexp');
HttpResponse res = h.send(webReq);
System.debug(' ------ '+res.getbody());

基本的には要求を承認する必要があります。それがログインページにリダイレクトされた理由です。私はあなたがすでにエンドポイントURL
を組織のリモートサイト設定に追加したと仮定します。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です