Python 3.5でのHTTPリクエストについて
WebhookにPOSTメソッドでリクエストを送るコードを実装している最中にエラーが発生しました。
Text
1Traceback (most recent call last): 2 File "C:\Users***\AppData\Local\Programs\Python\Python35-32\lib\urllib\parse.py", line 779, in urlencode 3 raise TypeError 4TypeError 5 6During handling of the above exception, another exception occurred: 7 8Traceback (most recent call last): 9 File "gt3.py", line 60, in <module> 10 data = urllib.parse.urlencode(data).encode('ascii') 11 File "C:\Users***\AppData\Local\Programs\Python\Python35-32\lib\urllib\parse.py", line 787, in urlencode 12 "or mapping object").with_traceback(tb) 13 File "C:\Users***\AppData\Local\Programs\Python\Python35-32\lib\urllib\parse.py", line 779, in urlencode 14 raise TypeError 15TypeError: not a valid non-string sequence or mapping object
様々なブログを見て回って書いたコードが原因だと思われるのですが、いまいちよくわかりません。
Python
1# -*- coding:utf-8 -*- 2 3from twitter import * 4import sys 5import urllib 6import urllib.request, urllib.parse 7import demjson 8import os 9sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)) 10 11from discordWebhooks import Webhook, Attachment, Field 12 13arg = sys.argv 14 15# Some Programs... 16 17url = "https://discordapp.com/api/webhooks/*****/*****" 18method = "POST" 19headers = {"Content-Type": "application/json"} 20data = {"content": text} 21data = demjson.encode(data) 22data = urllib.parse.urlencode(data).encode('ascii') 23 24req = urllib.request.Request(url, data=data, method=method, headers=headers) 25with urllib.request.urlopen(req) as res: 26 print(res.read().decode("utf-8"))
エラーログを見る限り、エンコード部分で失敗していると思うのですが、解決方法がわかりません。
どうすればいいでしょうか。
回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー