首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Salesforce到Taleo的基本HTTP身份验证

从Salesforce到Taleo的基本HTTP身份验证
EN

Stack Overflow用户
提问于 2013-04-22 23:29:30
回答 2查看 3.5K关注 0票数 0

我是一个新手,正在编写一个SOAP web服务(用于集成目的),为了执行SOAP调用,我需要首先验证用户(标准集成用户)。

下面是它的代码片段。但是,当我执行callout时,它为基本Http请求抛出错误代码500,为第二个Http请求抛出错误代码401。

这是正确的方法吗?

代码语言:javascript
复制
HTTP auth = new HTTP();
HTTPRequest r = new HTTPRequest();
r.setEndpoint('https://domainname.net/enterprise/soap?ServiceName=IntegrationManagementService');
Blob headerValue = Blob.valueOf(username+':'+password);
String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
r.setHeader('Authorization', authorizationHeader);
r.setMethod('POST');

try
{
 HTTPResponse authresp = auth.send(r);
 if(authresp.getStatusCode() == 200)
       { 
           system.debug('Authentication success!!!' + authresp);
       }
       else
       {system.debug('Authentication failed!!!' + authresp + authresp.getStatusCode());}    
         }catch(exception e){}

   //construct http request
    string endpointURL = 'https://doaminname.net/enterprise/soap?ServiceName=IntegrationManagementService';
   HttpRequest req = new HttpRequest();
   req.setMethod('POST');

   req.setEndpoint(endpointURL);
   req.setHeader('Content-Type','application/xml');
   req.setBody(TaleoXML);

   //send http request
   Http http = new Http();
   try
   {
       HttpResponse res = http.send(req);

       //check the response
       if(res.getStatusCode() == 200)
       { 
           system.debug('Callout success!!!' + res);
       }
       else
       {system.debug('Callout failed!!!' + res + res.getStatusCode());}    
   }catch(exception e){}  
EN

回答 2

Stack Overflow用户

发布于 2013-08-01 02:39:33

我不熟悉您在这里使用的库,但我可以建议一些可能性进行研究:

  • 基本身份验证是一种无状态方法。您不会登录并保持登录状态。这意味着没有单独的初始身份验证请求(正如您的代码所暗示的那样);您可以在每个请求中包含Authorization头。这就是为什么你会在第二个请求中得到401
  • 在第一个请求中,你提供了凭据,服务器遇到了一个意外的内部错误(这就是500的意思)。如果它包含具有错误响应的正文,则可能包含更多信息。我猜这与你的帖子没有提供正文的事实有关,服务器也没有预料到这一点。

如果这是您第一次使用SOAP,那么您最好使用专用的SOAP库,而不是尝试自己构造请求。

票数 0
EN

Stack Overflow用户

发布于 2018-03-06 21:06:37

在第二个请求中,您没有包括身份验证,这就是为什么您会得到401 (未授权)错误。

在第一个请求中,看起来您的身份验证没有问题,但是服务器无法处理该请求。我想你没有提到你想要使用的IntegrationManagementService webservice的功能/操作。或者您正在使用需要启用MTOM的函数/操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16150900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档