1

I am working on a project to incorporate Verizon Thingspace REST APIs into a Python program.

A co-worker provided me with an example in CURL that works (I am not familiar with Curl so am trying to convert into Python).

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" --header "VZ-M2M-Token: 621d9779-f8bc-4fe9-91dd-b726c52e7117" --header "Authorization: Bearer 89ba225e1438e95bd05c3cc288d3591" -d "{\"accountName\": \"TestAccount-1\"}" https://thingspace.verizon.com/api/m2m/v1/devices/actions/list

I'm trying to convert this exact same request into a Python function. Here's what I have:

import requests

def getList(token):
    url = "https://thingspace.verizon.com/api/m2m/v1/devices/actions/list"
    headers = {
                "Content-Type": "application/json", 
                "Accept": "application/json",
                "Authorization": "Bearer 89ba225e1438e95bd05c3cc288d3591",
                "VZ-M2M-Token": "f7ef3a35-abb6-418b-92d4-7cdac8b06c5f", 
            }
    data = {"accountName": "TestAccount-1"}

    print data

    deviceList = requests.post(url, data=data, headers=headers)

    print headers
    print (deviceList.status_code, deviceList.reason, deviceList.text)
    return deviceList

When I run this, I get the following error message back in JSON:

(400, 'Bad Request', u'{"errorCode":"REQUEST_FAILED.UnexpectedError","errorMessage":"Could not read document: Unrecognized token \'accountName\': was expecting (\'true\', \'false\' or \'null\')\n at [Source: java.io.PushbackInputStream@51ceaf1d; line: 1, column: 13]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'accountName\': was expecting (\'true\', \'false\' or \'null\')\n at [Source: java.io.PushbackInputStream@51ceaf1d; line: 1, column: 13]"}')

You can reference the API information here: https://thingspace.verizon.com/developer/apis#/Connectivity%20Management/API%20Reference/Retrieve%20Device%20Information.html

I believe there might be something wrong with my JSON string but I need another set of eyes.

1 Answer 1

2

data is not automatically converted to json, you have to do this explicitly:

deviceList = requests.post(url, data=json.dumps(data), headers=headers)
Sign up to request clarification or add additional context in comments.

1 Comment

Well that was fast and 100% correct! Thank you so much.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.