1

Amazon FPS から支払い結果情報を取得しようとしています。これには次の 2 つの形式があります。

  • GET およびクエリ文字列パラメーターを使用して元のサーバーにリダイレクトされたユーザー
  • Amazon は、一致するパラメーターを使用して発信元サーバーに POST を送信します。

どちらのリクエストが最初にサーバーに到達するかは保証できないため、最初のリクエストをシリアル化するrequest.GETrequest.POST使用して DB に保存し、後で他のリクエストと比較するためjson.dumpsに使用してロードしようとします。json.loads

最初のリクエスト:

type = request.META['REQUEST_METHOD']
sub_req = SubscriptionRequest()
params = getattr(request, type)
serialized_params = json.dumps(params)
if type == 'GET': sub_req.client_params = serialized_params
if type == 'POST': sub_req.server_params = serialized_params
sub_req.save()

フォローアップのリクエスト:

stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params)

エラー:

  File "/var/www/test.com/htdocs/apps/subscription/services.py", line 147, in subscription_request_check_or_store
    stored_params = json.load(sub_req.server_params if type == "GET" else sub_req.client_params)
  File "/usr/lib/python2.7/json/__init__.py", line 274, in load
    return loads(fp.read(),
AttributeError: 'unicode' object has no attribute 'read'
4

1 に答える 1

10

Json.load() はファイルから読み取ります。json.loads() を使用して文字列を解析します。

于 2013-04-17T03:14:08.383 に答える