2016-08-03 55 views
-1

Unsere API-Clients unterstützen nur das Format multipart/form-data und application/x-www-form-urlencoded. Also, wenn ich versuche, ihre API zuzugreifen:Wie geht es weiter mit multipart/form-data oder application/x-www-form-urlencoded Anfrage mit Requests Modul in Python?

import requests 
import json 

url = "http://api.client.com/admin/offer" 
headers = {"Content-Type": "multipart/form-data", "API-Key": "ffffffffffffffffffffffffffffffffffffffff"} 
data = {"Content-Type": "multipart/form-data", "title": "Demo offer", "advertiser": "f4a89a7h1aq", "url": "http://demo.com/", "url_preview": "http://demo.com/", "description": "Bla bla bla", "freshness": "fresh", "total": "2.0", "revenue": "1.8"} 
r = requests.post(url, headers=headers, data=json.dumps(data)) 

print r.text 

ich diese:

{"status":2,"error":"Submitted wrong data. Check Content-Type header"} 

Wie dieses Problem zu überwinden?

Danke!

Antwort

2

Unsere API-Clients unterstützen nur multipart/form-data und application/x-www-form-urlencoded Format

Doch Sie die Content-typeHeader setzen-application/json, die nicht multipart/form-data ist noch application/x-www-form-urlencoded.

Das Festlegen des Inhaltstyps im Hauptteil der HTTP-Anforderung wird nicht helfen.

Es scheint, dass der Server JSON nicht unterstützt. Sie sollten versuchen, die Daten als Standard-Form wie dieses Posting:

import requests 
import json 

url = "http://api.client.com/admin/offer" 
headers = {"API-Key": "ffffffffffffffffffffffffffffffffffffffff"} 
data = {"title": "Demo offer", "advertiser": "f4a89a7h1aq", "url": "http://demo.com/", "url_preview": "http://demo.com/", "description": "Bla bla bla", "freshness": "fresh", "total": "2.0", "revenue": "1.8"} 
r = requests.post(url, headers=headers, data=data) 

print r.text 

standardmäßig requests.post wird die Content-Type-Header zu application/x-www-form-urlencoded und wird „urlencode“ die Daten in dem Körper des Antrags fest. Dies sollte funktionieren, da Sie angeben, dass der Server application/x-www-form-urlencoded unterstützt.

+0

Vielen Dank, dass Sie bemerkt haben, dass ich json.dumps() nicht aus meinem Code entfernt habe. Das Problem war damit :-) – paus