ValueError: Keine JSON-Objekt dekodiert werden konnte
Ich versuche die folgende Beispiel-code aus dem betfair api:
import requests
import json
url="https://api.betfair.com/betting/json-rpc"
header = { 'X-Application' : appKey, 'X-Authentication' : sessionToken, 'content-type' : 'application/json' }
jsonrpc_req='{"jsonrpc": "2.0", "method": "SportsAPING/v1.0/listCompetitions", "params": {"filter":{ "eventTypeIds" : [1] }}, "id": 1}'
print json.dumps(json.loads(jsonrpc_req), indent=3)
print " "
response = requests.post(url, data=jsonrpc_req, headers=header)
print json.dumps(json.loads(response.text), indent=3)
Ich immer ValueError: No JSON object could be decoded
.
- Bitte zeigen Sie den kompletten traceback, nicht nur die Zeichenfolge der Fehlermeldung. Wie sonst könnten wir wissen, welche mehrere Aufrufe
json.loads
schief gehen? - Auch diese können nicht dein ganzes script, oder würden Sie bekommen
NameError: name 'appKey' is not defined
bevor Sie überhaupt soweit kommen. Vermutlich wollen Sie nicht, uns Ihren API-key und andere Anmeldeinformationen, aber das bedeutet, dass (wenn es das Letzte istloads
dass andernfalls) werden Sie haben, um uns die Inhalte derresponse.text
. - Als seitliche Anmerkung, warum haben Sie manuell codiert
jsonrpc_req
als JSON-string, anstatt nur die Schaffung einesdict
und dann ruftjson.dumps
drauf??? Die Art und Weise, die Sie getan haben, sollte es genauso gut funktionieren, aber es ist weniger gut lesbar, schwerer zu Debuggen, leichter zu brechen, während der Wartung, etc. - hinzugefügte Antwort.text, ich bin neu in json-also im Grunde nur mit dem mitgelieferten Beispiele auf der betfair-Website, wenn Sie mir zeigen bessere Wege, es zu tun, fühlen Sie sich frei.
- Wenn Ihre eigenen sample-code nicht eigentlich funktionieren, ohne dass änderungen in irgendeiner Form, und jeder, der es ansieht, kann sehen, dass Sie Ihnen die falsche URL... wahrscheinlich das beste, was zu tun ist, Kontaktieren Sie Ihren support. Selbst wenn Sie haben eine Art freies, no-Unterstützung-inklusive Entwickler-Accounts, ich Wette, Sie haben entweder einige Weg, Sie zu Kontaktieren und/oder ein öffentliches forum für die Benutzer gegenseitig helfen. Einer von den beiden wird Ihnen helfen, mehr als zufälligen Menschen auf SO, die haben noch nie davon gehört betfair und können nicht viel mehr tun, als Ihnen helfen, herauszufinden,, dass der betfair-web-service ist gebrochen...
- Es könnte auch sein, lohnt sich zu überprüfen, ob Ihre "REST" - API (was nicht wirklich RUHE, aber... was auch immer) in api.betfair.com/exchange/betting/rest/v1.0 (siehe hier) funktioniert, auch wenn der JSON-RPC nicht.
- danke, ich check it out.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hazarding eine Vermutung hier:
https://api.betfair.com/betting/json-rpc ist wieder eine 404, wenn eine gerade
GET
. Sie können sehen, das Ergebnis im browser zu. Eine gute API gibt die richtige Fehler-code (401 oder 403), wenn es ein header problem. Sind Sie sicher, dass Sie anrufen, die richtige Endpunkt?Zu beheben, brauchen wir mehr info. Was ist das Ergebnis der Veränderung deine Letzte Zeile zu:
Blick auf dein update, wirst du sehen, das gleiche wie mir:
The requested resource (/betting/json-rpc) is not available.
Entweder Sie senden die falschen header in der
POST
oder, wahrscheinlicher, der Aufruf die falsche url. Dabei ein wenig Graben ich denke, die richtige ist:https://api.developer.betfair.com/betting/json-rpc
v1
auf das Ende), wie im ersten Beispiel zu sehen hier.Den Betfair github code scheint nicht mehr aktuell - ich habe einfach versucht, das Python-Beispiel-code auf Ihr Konto, und es funktionierte für mich. Sie müssen die appKey und sessionToken in einer ähnlichen Weise zu der Antwort auf Ihre Vorherige, eng stellt sich die Frage,. Würde ich ignorieren, die out-of-date-Beispiel-code, den Sie ursprünglich verwiesen.