Skip to Content
avatar image
Former Member

Need Python 3 code snippet to call SAP Leonardo ML ReST API prodimgclassifier

Here's my NON-WORKING version using Python library requests.

import requests
import json
import logging

try:
    import http.client as http_client
except ImportError:
    # Python 2
    import httplib as http_client
http_client.HTTPConnection.debuglevel = 1

# You must initialize logging, otherwise you'll not see debug output.
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

headers = {'APIKey': 'your API Key',
           'Accept': 'application/json',
           'Content-Type': 'multipart/form-data'}

params = {'files' : 'Desert.jpeg'}
data = {'files' : 'Desert.jpg'} #  url encoded
# data = json.dumps(data) # flat
files = {'files' : open('Desert.jpg', 'rb')}

r = requests.post("https://sandbox.api.sap.com/ml/prodimgclassifier/inference_sync",
                  # params=params,
                  # data=data,
                  headers=headers,
                  files=files)
print('\n------------------\n')
print(r.text)

Response is:

"error_description": "This service requires at least 1 file. Please put your file(s) into the `fil
es` field of the POST request",
Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

2 Answers

  • Best Answer
    avatar image
    Former Member
    Sep 18, 2017 at 11:29 AM

    Hi Auro,

    If you get rid of the 'Content-Type':'multipart/form-data' in the header it should work:

    import requests
    url = "https://sandbox.api.sap.com/ml/prodimgclassifier/inference_sync"
    headers = {'APIKey': <your_API_key>, 'Accept': 'application/json'}
    files = {'files': open('desert.jpg', 'rb')}
    response = requests.post(url, files=files, headers=headers)
    print(response.text)
    
    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 21, 2017 at 04:48 AM

    Works! Thank you, @

    Christian Mathias Mueller

    Add comment
    10|10000 characters needed characters exceeded