Получить данные base64 файла от Salesforce - PullRequest
1 голос
/ 18 февраля 2020

Мне нужно получить файлы возможностей из Salesforce и скопировать их в какую-нибудь папку. Я использую . NET библиотека для подключения к Salesforcre. Я могу получить любые данные, которые мне нужны, кроме поля [VersionData] в таблице [ContentVersion], которое содержит base64 данные нужных мне файлов. Я могу получить данные с помощью инструмента Workbench, но через библиотеку NET я получаю только ссылку на файл. Я мог бы создать HttpClient с соответствующими заголовками и вызывать этот URL, но мне не нравится go таким образом. Могу ли я получить файл через библиотеку. NET?

1 Ответ

0 голосов
/ 18 февраля 2020

В REST API его нужно перетянуть через тот URL, который вы получили. Это будет необработанный двоичный поток данных, который будет сложно представить вместе в пределах JSON нормальных результатов запроса. Я полагаю, что REST API ориентирован на мобильные приложения, сводит к минимуму использование сети, а декодирование base64 - это некоторая вычислительная мощность.

Это не должно быть сложно? Просто получите URL-адрес, который вы получили с заголовком Authorization: Bearer <session id here>

Sample REST request with Postman

Если вы хотите base64, вам нужно сделать запрос API SOAP ( это то, что на самом деле использует Workbench, обратите внимание, что "REST explorer" - это отдельная опция меню. Вернет вам что-то подобное

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sf="urn:sobject.partner.soap.sforce.com">
   <soapenv:Header>
      <LimitInfoHeader>
         <limitInfo>
            <current>12</current>
            <limit>5000000</limit>
            <type>API REQUESTS</type>
         </limitInfo>
      </LimitInfoHeader>
   </soapenv:Header>
   <soapenv:Body>
      <queryResponse>
         <result xsi:type="QueryResult">
            <done>true</done>
            <queryLocator xsi:nil="true"/>
            <records xsi:type="sf:sObject">
               <sf:type>ContentVersion</sf:type>
               <sf:Id xsi:nil="true"/>
               <sf:VersionData>/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/
(bla bla bla)
/X/lf0eG9Kl61//Z</sf:VersionData>
            </records>
            <size>1</size>
         </result>
      </queryResponse>
   </soapenv:Body>
</soapenv:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...