私はYelpのFusion APIへのAPI呼び出しを試みています。私の呼び出しは、ハードコードされたときに機能します。私はビジネスのリストを取得しようとしているし、2つのGETを必要とするビジネスのためのレビューのリストを取得しています。私はビジネスのリストを歩み、関連するレビューを取得したいと思います。変数フォームを使用すると、次のコードではSend a complete request to the server
というメッセージが表示されます。ビジネスID値をハードコーディングしても問題ありません。挑戦が何であるか分かりません。 (初心者の質問がそう私のコードは、どちらかおそらく最高ではありません)conn.request
コールとPython HTTPConnection.requestに可変URL値を使用できません
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))
したがって、ハードコードされたURLを完全に異なる*変数URLに対してテストしています。何が間違っているのかは分かりません。一歩一歩進み、コードを単純化し、URLをプリントアウトし、ブラウザでテストしてください。これは疑問ではなく、単にデバッグするだけです。 –
'b_id'と' rurl'の例を投稿できますか? –
ヒントと入力のための@JohnZwinckに感謝します。アドバイスを使用することで、conn.getresponse()呼び出しが対応するconn.getresponse()およびres.read()呼び出しなしで使用したくないことを知ることができました。なぜそれがうまくいくのかは分かりません実用バージョンでこれらの行をコメントアウトし、以前のエラーを再現することで確認しました。 (奇妙なIMOに見えるが、何でも)。他の誰かがPythonでYelp APIを使用することについての別の質問で助けを求めていたので、解決策をもう少し考えて、その質問に対しても適用したいと考えていました。再度、感謝します。 – lmckeogh