Skip to content

Instantly share code, notes, and snippets.

@rsalmond
Created June 7, 2013 01:48
Show Gist options
  • Save rsalmond/5726554 to your computer and use it in GitHub Desktop.
Save rsalmond/5726554 to your computer and use it in GitHub Desktop.
Posting dicts along side a file with Requests seems to break when dict is nested. (Note "form:" section in output).
#!/usr/bin/python
import requests
import json
api = 'api_key'
url_test = 'http://httpbin.org/post'
files = {'file' : open('big_smile.png','rb')}
new_ticket = {'helpdesk_ticket' : {'description' : 'status = 2', \
#new_ticket = {'description' : 'status = 2', \
'created_at': '2012-06-04T23:13:34-08:00', \
'email' : 'rob@server.com', \
'subject' : 'some problem', \
'priority' : '2', \
'status' : '2'},
}
r = requests.post(url_test, data=new_ticket, files=files, auth=(api,'X'))
print r.status_code
print r.text
200
{
"origin": "209.139.228.33",
"files": {
"file": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVR42nVT7UtTYRQffexbEAT9Cw3qS0EWRkRLJCIIQwi1GZlCkWV+MlICq0kQy3xhbaktFFtqBUGzHNu822xtOl+nd+ZwL7617bZX7+52/XUfx6am/eDAOfc85/c8v3POFYn+wXvFYbH+s0Q1YblL0Y56N+146J4wVVH6/nyVpvWgWPQ/KJ/v36fVnJR5aHmIC3cjGWoDG5SB/d0g2CMkV5/CO14fGlQflZGzu4pN2iJDeK2D5xgFuPBbpCLvwP15IxC9FAgeI7FSDXahHLGZOt48UGDYQfJVc0IWXnnNJ5lWobAXznElLMZmpGOfBLIumL5XY+pHJda9FeAmixAfe8APdh6RZTS3HxJ7ZptCbKBp88aAvxev5LXo17wQSNpA6RrR31MJuawQvmkpkjPFSJsL4TfXhjTNB8Qi/cAZVTIoBxt4JtzWgXT8C3jWig1uEvy6AamoBkmmRZBRj8RSVYbAdAGwVMDYfVwlmhy+RfnGb4A2lsFF3cG8uQ7zI42CPRH8BtBUDeYMN+HUXYVTWwC67zRc6mMIf8zHlLaEErmste6R3msIeq0I+uxYmNaD8Y+DWZrAmscOn8sMZtkhxKNYnNUj7LeDWbTA0Z6HX/rbbpHLUuO2fShFFgzD5HyO4xCNRvfMjbafyhBMDUkpW09xLhGJRHJ+KpVCLBbbldvg0xhTnM1III1Y1Umx8FOzmYzH47mCdDqNRCKRi7M52qhE+FtJpolkFGQkFtVlgXoDLMvuINgeZ32b8uLWGAnIUixry3ib+jq45FYBz/ObfchJ4pKwqqVYHizdWqTsKpv7JIagrpw3tUgQW3NltAovIq8giK7SsLRKEBgq58nZPf8Hwuo13g/NdZ2HQ5GPsa4rGO24BHtbHpyd5+AZvseQM7uKt4PoIs0hHSZjIkZ88i2neRv+AnO2vpuXyS6CAAAAAElFTkSuQmCC"
},
"form": {
"helpdesk_ticket": [
"status",
"description",
"created_at",
"priority",
"email",
"subject"
]
},
"url": "http://httpbin.org/post",
"args": {},
"headers": {
"Content-Length": "1550",
"Accept-Encoding": "gzip, deflate, compress",
"Connection": "close",
"Accept": "*/*",
"User-Agent": "python-requests/1.2.3 CPython/2.7.3 Linux/3.5.0-32-generic",
"Host": "httpbin.org",
"Content-Type": "multipart/form-data; boundary=cc0de6999c5e4dd2bbaae24b8d3dd6db",
"Authorization": "Basic eU5ZWU1lazB0VEduSlRjaHN6UzE6WA=="
},
"json": null,
"data": ""
}
#!/usr/bin/python
import requests
import json
api = 'api_key'
url_test = 'http://httpbin.org/post'
files = {'file' : open('big_smile.png','rb')}
#new_ticket = {'helpdesk_ticket' : {'description' : 'status = 2', \
new_ticket = {'description' : 'status = 2', \
'created_at': '2012-06-04T23:13:34-08:00', \
'email' : 'rob@server.com', \
'subject' : 'some problem', \
'priority' : '2', \
'status' : '2'}
#}
r = requests.post(url_test, data=new_ticket, files=files, auth=(api,'X'))
print r.status_code
print r.text
200
{
"origin": "209.139.228.33",
"files": {
"file": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVR42nVT7UtTYRQffexbEAT9Cw3qS0EWRkRLJCIIQwi1GZlCkWV+MlICq0kQy3xhbaktFFtqBUGzHNu822xtOl+nd+ZwL7617bZX7+52/XUfx6am/eDAOfc85/c8v3POFYn+wXvFYbH+s0Q1YblL0Y56N+146J4wVVH6/nyVpvWgWPQ/KJ/v36fVnJR5aHmIC3cjGWoDG5SB/d0g2CMkV5/CO14fGlQflZGzu4pN2iJDeK2D5xgFuPBbpCLvwP15IxC9FAgeI7FSDXahHLGZOt48UGDYQfJVc0IWXnnNJ5lWobAXznElLMZmpGOfBLIumL5XY+pHJda9FeAmixAfe8APdh6RZTS3HxJ7ZptCbKBp88aAvxev5LXo17wQSNpA6RrR31MJuawQvmkpkjPFSJsL4TfXhjTNB8Qi/cAZVTIoBxt4JtzWgXT8C3jWig1uEvy6AamoBkmmRZBRj8RSVYbAdAGwVMDYfVwlmhy+RfnGb4A2lsFF3cG8uQ7zI42CPRH8BtBUDeYMN+HUXYVTWwC67zRc6mMIf8zHlLaEErmste6R3msIeq0I+uxYmNaD8Y+DWZrAmscOn8sMZtkhxKNYnNUj7LeDWbTA0Z6HX/rbbpHLUuO2fShFFgzD5HyO4xCNRvfMjbafyhBMDUkpW09xLhGJRHJ+KpVCLBbbldvg0xhTnM1III1Y1Umx8FOzmYzH47mCdDqNRCKRi7M52qhE+FtJpolkFGQkFtVlgXoDLMvuINgeZ32b8uLWGAnIUixry3ib+jq45FYBz/ObfchJ4pKwqqVYHizdWqTsKpv7JIagrpw3tUgQW3NltAovIq8giK7SsLRKEBgq58nZPf8Hwuo13g/NdZ2HQ5GPsa4rGO24BHtbHpyd5+AZvseQM7uKt4PoIs0hHSZjIkZ88i2neRv+AnO2vpuXyS6CAAAAAElFTkSuQmCC"
},
"form": {
"status": "2",
"description": "status = 2",
"created_at": "2012-06-04T23:13:34-08:00",
"priority": "2",
"email": "rob@server.com",
"subject": "some problem"
},
"url": "http://httpbin.org/post",
"args": {},
"headers": {
"Content-Length": "1523",
"Accept-Encoding": "gzip, deflate, compress",
"Connection": "close",
"Accept": "*/*",
"User-Agent": "python-requests/1.2.3 CPython/2.7.3 Linux/3.5.0-32-generic",
"Host": "httpbin.org",
"Content-Type": "multipart/form-data; boundary=c0a2eecb46294284a65eb60d6ccc6978",
"Authorization": "Basic eU5ZWU1lazB0VEduSlRjaHN6UzE6WA=="
},
"json": null,
"data": ""
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment