3

REST APIを使用して、あるSalesforce組織から別のSalesforce組織にコールアウトします。それは11月末まで機能しました。影響を受けるクラスまたは構成には変更を加えませんでした。これで、残りのAPIにリクエストを送信しているときに、「プロキシを介してトンネリングできません。プロキシは「HTTP /1.0503サービスを利用できません」を返します。残りのAPIへの認証はセッションIDによって行われます。誰かが問題が何であるかを知っていますか?

ここでコードが切り取られました:

final String WS_ENDPOINT = 'https://login.salesforce.com/services/Soap/c/24.0'; 
final String REST_ENDPOINT = 'https://eu2.salesforce.com/services/apexrest/UsageReporterService';
final String USERNAME = '*****'; 
final String PASSWORD = '*****'; 

HTTP h = new HTTP();
HTTPRequest req = new HTTPRequest();
req.setMethod('POST');
req.setEndpoint(REST_ENDPOINT);
req.setHeader('Content-Type', 'application/json');
req.setTimeout(60000);
HTTP hLogin = new HTTP(); 
HTTPRequest reqLogin = new HTTPRequest(); 
reqLogin.setMethod('POST'); 
reqLogin.setEndpoint(WS_ENDPOINT);
reqLogin.setHeader('Content-Type', 'text/xml'); 
reqLogin.setHeader('SOAPAction', 'login'); 
reqLogin.setTimeout(60000); 

reqLogin.setCompressed(false); 
// get a valid session id
String sessionId;
String loginSoap = '<?xml version="1.0" encoding="UTF-8"?>';    
loginSoap += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com">';     
loginSoap += '<soapenv:Body>';     
loginSoap += '<urn:login>'; 
loginSoap += '<urn:username>' + USERNAME + '</urn:username>';     
loginSoap += '<urn:password>' + PASSWORD + '</urn:password>'; 
loginSoap += '</urn:login>';     
loginSoap += '</soapenv:Body>';     
loginSoap += '</soapenv:Envelope>';     
reqLogin.setBody(loginSoap); 

HTTPResponse respLogin; 
try {
    respLogin = hLogin.send(reqLogin);
} catch(CalloutException c){        
    return null;
}       

System.debug('++++++'+respLogin.getStatus() + ': ' + respLogin.getBody());
Dom.Document doc = new Dom.Document();
doc.load(respLogin.getBody());
Dom.XMLNode root = doc.getRootElement();
String ns = root.getNamespace();
Dom.XMLNode bodyEl = root.getChildElements()[0];


 if(bodyEl.getChildElements()[0].getName().equals('loginResponse')){
      sessionId = bodyEl.getChildElements()[0].getChildElement('result', ns).getChildElement('sessionId', ns).getText();
}


 // finished getting session Id     
  if(sessionId != null){ // login was successfull
    req.setHeader('Authorization', 'Bearer ' + sessionId);  
   // serialize data into json string
   UsageReporterModel usageReporterData = new UsageReporterModel();
   String inputStr = usageReporterData.serialize();
   req.setBody('{ "usageReportData" : ' + inputStr + '}');       
   // fire!
   HTTPResponse resp;
   try {
    resp = h.send(req);
   } catch(CalloutException c){             
        return null;
   }            
}
4

1 に答える 1