Я пытался выяснить, как сделать POST в API (в данном случае в Goodreads), используя библиотеку ouath2 , но я остаюсь в тупике, поскольку на выходе всегда есть сообщение об ошибке,
Я обращаюсь к ответам в этом вопросе о стековом потоке .
Ниже - документация API Goodread, над которой я сейчас работаю.
Следуйте за автором
Заставьте зарегистрированного пользователя следовать за автором, используя OAuth. Вам нужно будет зарегистрировать свое приложение (обязательно). URL: https://www.goodreads.com/author_followings?id=AUTHOR_ID&format=xml
Метод HTTP: POST
ниже - моя 1-я попытка POST: (сообщение об ошибке: не является допустимой строкой)объект последовательности или сопоставления )
import oauth2 as oauth
import urllib.parse
url = 'https://www.goodreads.com/author_followings?'
parameters = {'id' : '1077326',
'format' : 'xml',
}
echo_base_url = url + urllib.parse.urlencode(parameters)
consumer = oauth.Consumer(key ='J9l5Jsn...........', secret='N8cWf4Da...bynGVQ..........')
client = oauth.Client(consumer)
resp, content = client.request(
echo_base_url,
method = "POST",
body= urllib.parse.urlencode(None),
headers= None,
force_auth_header=True,
)
print (resp, content)
моя вторая попытка: (сообщение об ошибке: request () получил неожиданный аргумент ключевого слова 'force_auth_header' )
import oauth2 as oauth, urllib.parse
def oauth_req(url, key, secret, http_method="POST", post_body=None, http_headers=None):
CONSUMER_KEY = key
CONSUMER_SECRET = secret
consumer = oauth.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)
#token = oauth.Token(key=key, secret=secret)
client = oauth.Client(consumer)
resp, content = client.request(
url,
method=http_method,
body=urllib.parse.urlencode({'status': post_body}),
headers=http_headers,
force_auth_header=True,
)
return content
oauth_req('https://www.goodreads.com/author_followings?id=1077326&format=xml', 'J9l5.......', 'N8........QYIg70ru.......FVoYc', http_method="POST", post_body=None, http_headers=None)
До сих пор я мог только делать GET и пробовал POST, но не нашел ни одного кода, который бы работал ни разу. Нужно просветление здесь ..