現在、私のAzureアカウントで利用可能なリスト共有をsalesforceから取得しようとしています。私は、サンプルコードの下から例を実装しようとしています:azure REST API通信
https://docs.microsoft.com/en-us/rest/api/storageservices/list-shares#samplerequestandresponse
//private key: access key of my account
string storageKey =private key;
string storageName = 'accountName';
Datetime dt = Datetime.now();
string formattedDate = dt.formatGMT('EEE, dd MMM yyyy HH:mm:ss')+ ' GMT';
system.debug('formattedDate--'+formattedDate);
string CanonicalizedHeaders = 'x-ms-date:'+formattedDate+'\nx-ms-version:2016-05-31';
string CanonicalizedResource = '/' + storageName + '/\ncomp:list';
string StringToSign = 'GET\n\n\n\n\n\n\n\n\n\n\n\n' + CanonicalizedHeaders+'\n'+CanonicalizedResource;
system.debug('StringToSign--'+StringToSign);
Blob temp = EncodingUtil.base64Decode(storageKey);
Blob hmac = Crypto.generateMac('HmacSHA256',Blob.valueOf(StringToSign),temp); //StringToSign
system.debug('oo-'+EncodingUtil.base64Encode(hmac));
HttpRequest req = new HttpRequest();
req.setMethod('GET');
//req.setHeader('content-type', 'application/xml');
req.setHeader('x-ms-version','2016-05-31');
req.setHeader('x-ms-date', formattedDate);
string signature = EncodingUtil.base64Encode(hmac);
string authHeader = 'SharedKey salesforcestrongaccount'+':'+signature;
req.setHeader('Authorization',authHeader);
req.setEndpoint('https://<accountName>.file.core.windows.net/?comp=list');
Http http = new Http();
HTTPResponse res;
res = http.send(req);
System.debug(LoggingLevel.INFO, 'http.send result status: ' + res.getStatus());
任意の助けを?
あなたは 'stringToSign'を計算する方法に問題があります。 https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-servicesで説明されている手順に従って、再度リクエストを試みてください。 –
サンプルコードを提供できますか?私はリンクで指定されたプロセスを試したので。ボタンの運針 – Rv1
あなたはその指示に従っていませんでした。私はあなたのコードを一目見て、それを理解しました。私はあなたがもう少し慎重に文書を読むことをお勧めします。 Azure Storage REST APIのサンプルを検索すると、十分なソースコードが見つかるはずです。 –