entschuldigt den Titel, mir ist nichts Anderes eingefallen. Folgender Ausschnitt soll eine eBay Abfrage durchführen. Wenn ich nun das JSON als Zeichenkette im Text habe, funktioniert es. Erzeuge ich die Zeichenkette mit json.dumps, kommt ein 500er HTTP error zurück.
Vielleicht stehe ich total auf dem Schlauch, aber wo ist der Unterschied (außer ein paar Leerzeichen)?
Code: Alles auswählen
# -*- coding: utf-8 -*-
import json
import urllib2
url = 'http://svcs.ebay.com/services/search/FindingService/v1'
headers = {
'X-EBAY-SOA-SERVICE-NAME': 'FindingService',
'X-EBAY-SOA-OPERATION-NAME': 'findItemsByKeywords',
'X-EBAY-SOA-SERVICE-VERSION': '1.1.0',
'X-EBAY-SOA-GLOBAL-ID': 'EBAY-DE',
'X-EBAY-SOA-SECURITY-APPNAME': 'MyAppID', # Echte ID einsetzen
'X-EBAY-SOA-REQUEST-DATA-FORMAT': 'JSON',
'X-EBAY-SOA-RESPONSE-DATA-FORMAT': 'JSON',
}
raw_data = {
"jsonns.xsi": "http://www.w3.org/2001/XMLSchema-instance",
"jsonns.xs": "http://www.w3.org/2001/XMLSchema",
"jsonns.tns": "http://www.ebay.com/marketplace/search/v1/services",
"tns.findItemsByKeywordsRequest": {
"keywords": "harry potter +dvd"
}
}
data = json.dumps(raw_data)
s = ('{"jsonns.xsi":"http://www.w3.org/2001/XMLSchema-instance",'
'"jsonns.xs": "http://www.w3.org/2001/XMLSchema",'
'"jsonns.tns": "http://www.ebay.com/marketplace/search/v1/services",'
'"tns.findItemsByKeywordsRequest": {'
'"keywords": "harry potter +dvd"}}')
print repr(data)
print repr(s)
# Funktioniert
req = urllib2.Request(url, data=s, headers=headers)
# Funktioniert nicht
req = urllib2.Request(url, data=data, headers=headers)
sock = urllib2.urlopen(req)
res = sock.read()
sock.close()
print json.loads(res)
Gruß
Whitie