[Force.comでWeb制作]HTTPコールアウトのエンドポイントのデバッグ
Force.comから外部のWebサービスに対してHTTPコールアウトをした場合や、外部からHTTPリクエストを受け取るときに、HTTPヘッダ情報のデバッグを行う方法のご紹介。
参考:Endpoint for Debugging HTTP Callouts
HTTPリクエストを受け取る用のVisualforceページを用意してしまって、そのページをSitesで公開して、そのページのコントローラでHTTPヘッダを解析してどこかに表示する、ということをやればスピーディーにデバッグが行えます。
Visualforceページ&コントローラ例
[php]
<apex:page controller="Endpoint_Controller" cache="false" showHeader="false" sidebar="false" action="{!init}">
<pre>
<apex:outputText escape="false" value="{!debugInfo}"></apex:outputText>
</pre>
</apex:page>
[/php]
[php]
public without sharing class Endpoint_Controller {
public String debugInfo {get; set;}{
debugInfo = ”;
if (ApexPages.currentPage() != null){
// Incoming Headers
debugInfo += ‘\n***ALL INCOMING HEADERS ***\n’;
for (string key: ApexPages.currentPage().getHeaders().keySet()){
if (ApexPages.currentPage().getHeaders().get(key) != null){
debugInfo += key + ‘ = ‘ + ApexPages.currentPage().getHeaders().get(key) + ‘\n’;
}
}
// Incoming Parameters
debugInfo += ‘\n***ALL INCOMING PARAMETERS ***\n’;
for (string key: ApexPages.currentPage().getParameters().keySet()){
if (ApexPages.currentPage().getParameters().get(key) != null){
debugInfo += key + ‘ = ‘ + ApexPages.currentPage().getParameters().get(key) + ‘\n’;
}
}
// Other Page Reference Stuff
debugInfo += ‘\n***OTHER PAGE REFERENCE INFO ***\n’;
debugInfo += ‘Anchor: ‘ + ApexPages.currentPage().getAnchor() + ‘\n’;
debugInfo += ‘URL: ‘ + ApexPages.currentPage().getUrl() + ‘\n’;
}
}
public Endpoint_Controller(){}
public PageReference init() {
Task t = new Task();
t.Subject = ‘Endpoint Invoked’;
t.Description = debugInfo;
t.ActivityDate = Date.Today();
insert t;
return null;
}
static testMethod void Endpoint_Controller_test() {
// Set the page reference and pass through some parameters
PageReference thePage = Page.Endpoint;
thePage.getParameters().put(‘param1′,’1’);
thePage.getParameters().put(‘param2′,’2’);
Test.setCurrentPage(thePage);
// Run the init function to have it handle the web to lead submission
Endpoint_Controller ep = new Endpoint_Controller();
ep.init();
}
}
[/php]
ページアクセス時に、initメソッドが実行されて、HTTPのパラメータを分析します。その情報をdebugInfoという変数に格納して、ページ上に表示したりタスクレコードに保存したりします。
外部のWebサービスと連携するときに、このページとコントローラを該当組織にインストールしておいて、連携の途中でエンドポイントをこのページ向きにしてやれば、途中途中のHTTPパラメータのデバッグが可能になります。
やってることは、SF開発用の確認君みたいな感じ。
こちらにサンプル用意しておきました。
http://abeuhuru-developer-edition.na2.force.com/endpoint