конвертировать curl в python3 и изображение в base64 не работает - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть команда curl, которая отправляет изображение jpg, преобразованное в base64, в веб-сервис:

curl -X POST --insecure \
https://link_to_the_web_service.com \
-H 'authorization:authorization_token'  \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{"model_spec": {"name": "inception", "signature_name": "predict_images"}, "inputs": {"images": {"dtype": 7, "tensor_shape": {"dim":[{"size": 1}]}, "string_val": ["IMAGE_CONVERTED_TO_BASE_64"]}}}'

Я преобразую изображение jpg в base64, используя веб-сайт ниже: "https://www.browserling.com/tools/image-to-base64". Выполнение команды curl дает успешный вывод.

Теперь я тестирую веб-сервис, беря изображения jpg, преобразуя команду curl в python3 и изображение в base64, используя python3, например:

import requests
import base64

host = 'https://link_to_the_web_service.com'
image = 'sample5.jpg'

image_64_encode = base64.b64encode(open('sample5.jpg',"rb").read())

headers = {'authorization': token, 'cache-control': 'no-cache', 'content-type': 'application/json'}

data={"model_spec": {"name": "inception", "signature_name": "predict_images"}, "inputs": {"images": {"dtype": 7, "tensor_shape": {"dim":[{"size": 1}]}, "string_val": [str(image_64_encode)]}}}

request = requests.post(url=host, 
                    data=data,
                    headers=headers,
                    verify=False)

print(request)

и я получаю ответ <500>, который означает, что веб-служба не может прочитать ввод изображения. Я даже попытался преобразовать base64.encodestring в base64, но не повезло.

Какправильно преобразовать приведенную выше команду curl в python?

1 Ответ

0 голосов
/ 27 февраля 2019

Параметр data метода requests.post ожидает строку, а не диктат.Вместо этого вы должны опубликовать полезную нагрузку в формате JSON с параметром json:

request = requests.post(url=host, 
                        json=data,
                        headers=headers,
                        verify=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...