2011-07-19 40 views
0

すべてのSalesforceオブジェクトのリストを取得したいとします。 iはまた、POSTリクエストのURLでセッション・キーを付加し、これを防ぐためにそれが表示されます)Salesforceでapexを使用してすべてのSalesforceオブジェクトのリストをプログラムで取得します

1)不足しているセッション(無効なセッションID: 私は、このリンク http://wiki.developerforce.com/index.php/Enterprise_Describe_Global

が見つかりましたが、いくつかの問題がありますリクエストはありません。

エラー:内部サーバーエラー(500)

2)どこか発見し、セッション・ヘッダが、再び無応答と一緒のclientIdを加えました。

エラー:Web要求の内部サーバーエラー(500)

コードサンプル:

HttpRequest req = new HttpRequest(); 
Http http = new Http(); 
req.setMethod('POST'); 
req.setHeader('content-type','text/xml;charset=utf-8'); 
req.setHeader('Content-Length','1024'); 
req.setHeader('Host','na1.salesforce.com '); 
req.setHeader('Connection','keep-alive'); 
req.setHeader('soapAction', 'getObjects'); 
String url = 'https://na1.salesforce.com/services/Soap/c/10.0/session_key'; 

String str = '<?xml version="1.0" encoding="utf-8"?> '+ 
      '<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:enterprise.soap.sforce.com\">'+ 
      '<soapenv:Header>'+ 
      '<urn:SessionHeader>'+ 
      '<urn:sessionId>'+'session_ID'+'</urn:sessionId>'+ 
      '</urn:SessionHeader>'+ 
      '<urn:CallOptions><urn:client>CLIENT_ID</urn:client></urn:CallOptions>'+ 
      '</soapenv:Header>'+ 
      '<soapenv:Body>'+ 
         '<describeGlobal></describeGlobal>'+ 
         '</soapenv:Body>'+ 
         '</soapenv:Envelope>'; 

req.setEndpoint(url);    
req.setBody(str); 
HTTPResponse resp = http.send(req); 
system.debug('response:::'+xml_resp); 

Session_ID : I got this value from UserInfo.getSessionID(); 

client_ID : I tried following values : UserInfo.getUserID();/Secret token 

が、私はそれreaponseを取得するための完璧な呼び出し作るcouldntの。

ホープ誰かが助けることができる

...

答えて

3

は、なぜあなたはアペックスでのアウトバウンドのWebサービス呼び出しを使用していますか? Apexは、Schema.getGlobalDescribe() - と多くの場合、の記述結果にアクセスするより良い方法を使用して、グローバル記述情報にネイティブアクセスできます。

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_schema.htmには、Apexからこれを呼び出すための完全なドキュメントがあります。

関連する問題