Question

The following code in utils.py

manager = PoolManager()
data = json.dumps(dict) #takes in a python dictionary of json
manager.request("POST", "https://myurlthattakesjson", data)

Gives me ValueError: need more than 1 value to unpack when the server is run. Does this most likely mean that the JSON is incorrect or something else?

Was it helpful?

Solution

Your Json data needs to be URLencoded for it to be POST (or GET) safe.

# import parser
import urllib.parse

manager = PoolManager()

# stringify your data
data = json.dumps(dict) #takes in a python dictionary of json

# base64 encode your data string
encdata = urllib.parse.urlencode(data)    

manager.request("POST", "https://myurlthattakesjson", encdata)

I believe in python3 they made some changes that the data needs to be binary. See unable to Post data to a login form using urllib python v3.2.1

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top