Может кто-нибудь объяснить мне, почему «версия 1» моего кода не работает, а «версия 2» работает? Вывод обеих версий ниже. По какой-то причине my_data
неправильно вставлен в запрос urllib, но я не могу понять, почему. Я попробовал 20 различных примеров и методов также прямо из Python документации, но это не так. Это не только ключ действия, также когда я хочу вставить имя пользователя и пароль в качестве ключей, это не имеет успеха. Я тут ломаю голову ...
import urllib.request
import urllib.error
import urllib.parse
my_url = 'http://{0}:{1}/?username=myuser&password=mypass'.format('10.10.127.47', 80)
my_headers = { "Content-Type" : "application/x-www-form-urlencoded" }
# ---- begin version 1 / not working ----------------------------------------------
my_data = { "action" : "getmetadata" }
my_uedata = urllib.parse.urlencode(my_data)
my_edata = my_uedata.encode('utf-8')
req = urllib.request.Request(url=my_url, data=my_edata, headers=my_headers)
# ---- end version 1 --------------------------------------------------------------
# ---- begin version 2 / works fine -----------------------------------------------
req = urllib.request.Request(url=''.join([my_url, '&action=getmetadata']), data=None, headers=my_headers)
# ---- end version 2 --------------------------------------------------------------
response = urllib.request.urlopen(req)
html = response.read()
print(html)
Вывод версии 1:
b'{"schemaVersion":"3.0.0","action":"Unknown","actionDetail":null,"userName":"myuser","password":"mypass","metadata":[],"configurations":[],"commandItems":[]}'
Вывод версии 2:
b'{"schemaVersion":"3.0.0","action":"GetMetadata","actionDetail":null,"userName":"myuser","password":"mypass","metadata":[{"key":"permissions","value":[]},{"key":"Title","value":"Blabla"},{"key":"Description","value":"fjshkfsdhskjhfsk"},{"key":"Keyword","value":""},{"key":"Learningdescription","value":""},{"key":"Rightsdescription","value":"Creative Commons"},{"key":"SessionId","value":""},{"key":"PauseAndResumeVideoTime","value":""},{"key":"VideoSegments","value":""},{"key":"VideoTrackPosition","value":"0,25:50,75;50,25:100,75"},{"key":"SlideTrackPositionIndex","value":"2"},{"key":"Coverage","value":""},{"key":"Language","value":"en"},{"key":"Structure","value":"linear"},{"key":"Aggregationlevel","value":"3"},{"key":"SubjectAreas","value":"NBC1"},{"key":"Version","value":"1.0"},{"key":"Status","value":"final"},{"key":"EducationalLearningResourceType","value":"informatiebron"},{"key":"intendedenduserrole","value":"learner"},{"key":"EducationalContext","value":"HBO"},{"key":"Typicalagerange","value":"18-24"},{"key":"Difficulty","value":"medium"},{"key":"Typicallearningtime","value":""},{"key":"EducationalLanguage","value":"en"},{"key":"Cost","value":"No"},{"key":"Copyrights","value":"Yes"},{"key":"Showincatalogue","value":"True"},{"key":"PublishDate","value":""},{"key":"ExpirationTime","value":"730"},{"key":"Duration","value":"0"},{"key":"contributors","value":[]}],"configurations":[],"commandItems":[]}'