rest - force.com 标注异常无法通过代理建立隧道

标签 rest exception force.com callout

我们使用 REST API 从一个 Salesforce 组织向另一个 Salesforce 组织发出调用。这一直有效到 11 月底。我们没有对受影响的类或配置进行任何更改。 现在,在向 rest api 发送请求时,将抛出一个标注异常,并显示消息:“无法通过代理建立隧道。代理返回“HTTP/1.0 503 服务不可用”。 对其余 api 的授权是通过 session 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;
   }            
}

最佳答案

我怀疑这将与未正确列入白名单(或添加到“网络访问”对象)的组织之一的 IP 地址更改有关。由于它是 Salesforce 到 Salesforce,我希望 Salesforce.com 支持能提供帮助?

关于rest - force.com 标注异常无法通过代理建立隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868350/

相关文章:

rest - ASP.NET Web API 设计的最佳实践?

java - OffsetDateTime 在 GET 方法中产生 "No injection source found for a parameter of type public javax.ws.rs.core.response"

java - 为什么我在解析 xml 文件时遇到 fatal error ?

java - 捕获 InputMismatchException 不会返回消息

api - Force.com API 会计日期文字的时区?

zend-framework - Zend : What is the most common way to create Rest Zend routes?

http - 如何处理 Jersey 发布请求的可变数量参数

java - 错误-java.lang.NoClassDefFoundError : org/apache/commons/logging/LogFactory

salesforce - 在 Apex v24.0 中对 OpportunityLineItem 进行单元测试时,如何避免 STANDARD_PRICE_NOT_DEFINED?

css - 无法在 Force.com 站点的 visualforce 页面中显示样式表和图像