Ich versuche, eine API-Aufruf an Yelp Fusion API. Meine Anrufe funktionieren, wenn sie hart codiert sind. Ich versuche, eine Liste von Unternehmen zu bekommen und dann eine Liste von Bewertungen für diese Unternehmen, die zwei GETs erfordert. Ich möchte die Liste der Unternehmen durchgehen und die zugehörigen Bewertungen erhalten. Der folgende Code führt zu einer Nachricht Send a complete request to the server
bei Verwendung des Variablenformulars. Hartes Kodieren eines Geschäfts-ID-Wertes funktioniert gut. Nicht sicher, was die Herausforderung ist. (Newbie Frage so mein Code ist wahrscheinlich nicht die beste entweder)Verwenden eines Variablen-URL-Werts für Python HTTPConnection.request fehlgeschlagen
import http.client
import json
conn = http.client.HTTPSConnection("api.yelp.com")
headers = {
'authorization': "Bearer <access token value>",
'cache-control': "no-cache",
'postman-token': "<token value>"
}
#This request works fine
conn.request("GET", "/v3/businesses/search?latitude=40.8059518&longitude=-73.9657435&limit=10&radius=200&term=restaurant", headers=headers)
res = conn.getresponse()
data = res.read()
yelp_result = json.loads(data.decode("utf-8"))
all_businesses = []
for business in yelp_result['businesses']:
b_name = business['name']
b_id = business['id']
rurl = "/v3/businesses/" + b_id + "/reviews"
#This is the request resulting in error given earlier
conn.request("GET",rurl,headers=headers)
all_businesses.append((b_id, b_name))
integrieren Sie testen also eine fest codierte URL gegen eine * völlig andere * variable URL, und Sie sind sich nicht sicher, was falsch ist. Also gehen Sie Schritt für Schritt, vereinfachen Sie Ihren Code, drucken Sie die URLs aus, testen Sie sie in einem Browser, etc. Das ist keine Frage für uns, Sie müssen es nur debuggen. –
Können Sie Beispiele für 'b_id' und' rurl' veröffentlichen? –
Danke @JohnZwinck für die Hinweise und Eingaben. Die Verwendung von Advice konnte feststellen, dass der Aufruf conn.getresponse() nicht ohne die entsprechenden Aufrufe conn.getrispse() und res.read() verwendet werden kann. Nicht ganz sicher warum, aber es funktioniert. Verifiziert durch Kommentieren dieser Zeilen in der Arbeitsversion und Reproduzieren früherer Fehler. (scheint seltsam IMO, aber was auch immer). Sah jemand anderes Hilfe in einer anderen Frage über die Verwendung der Yelp-API mit Python gesucht, so nahm die Lösung ein wenig weiter in der Hoffnung, dass es auch gegen diese Frage gilt. Danke noch einmal. – lmckeogh