0

私は初心者で、(統合目的で) SOAP Web サービスを作成しています。SOAP 呼び出しを実行するには、最初にユーザー (標準統合ユーザー) を認証する必要があります。

以下は、そのコード スニペットです。ただし、コールアウトを実行すると、基本的な Http リクエストに対してエラー コード 500 がスローされ、2 番目の Http リクエストに対してエラー コード 401 がスローされます。

これは正しいアプローチですか?

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){}  
4

2 に答える 2

0

2 番目のリクエストでは認証を含めていません。これが 401 (Unauthorized) エラーが発生する理由です。

最初のリクエストでは、認証に問題がないように見えますが、サーバーはリクエストの処理に失敗します。使用したい IntegrationManagementService Web サービスの機能/操作についての参照が不足していると思います。または、MTOM を有効にする必要がある関数/操作を使用しています。

于 2018-03-06T13:06:36.613 に答える