Загрузить PDF из Python как приложение к объекту Salesforce - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь загрузить PDF-файл, сгенерированный в Python, как вложение к объекту salesforce, используя пакет simple_salesforce Python. Я пробовал несколько разных способов сделать это, но пока не повезло. Вот код

import base64
import json
from simple_salesforce import Salesforce

instance = ''
sessionId = sf.session_id

def pdf_encode(pdf_filename):
    body = open(pdf_filename, 'rb') #open binary file in read mode 
    body = body.read() 
    body = base64.encodebytes(body)

body = pdf_encode('PDF_Report.pdf')


response = requests.post('https://%s.salesforce.com/services/data/v29.0/sobjects/Attachment/' % instance,
    headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer %s' % sessionId },
    data = json.dumps({
        'ParentId': parent_id,
        'Name': 'test.txt',
        'body': body
    })
)

Я получаю эту ошибку.

TypeError: Object of type bytes is not JSON serializable

Я также пытался использовать

body = base64.encodebytes(body).decode('ascii')

в моем коде, но я не могу заставить это работать , Я получаю сообщение об ошибке

UnicodeError: encoding with 'idna' codec failed (UnicodeError: label empty or too long)

Любые предложения о том, как загрузить PDF-файл из Python 3 в Salesforce в качестве вложения с использованием simple_salesforce?

...