我一直在尝试找出如何使用ouath2 library在API(在本例中为Goodreads)中进行POST,但是由于输出始终是错误消息,因此我一直处于困境。
我参考了this stackoverflow question中的答案。
Below是我目前正在使用的Goodread API文档。
关注作者
使登录的用户使用OAuth关注作者。您需要注册您的应用程序(必填)。网址: https://www.goodreads.com/author_followings?id=AUTHOR_ID&format=xml
HTTP方法:POST
下面是我的第一次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,但没有找到任何能正常工作的代码。这里需要一个启示。
答案 0 :(得分:0)
使用API工具并首先从中获取结果:Curl,SOAPUI等... 得到正确的POST请求结果后,将那些数据移到您的代码中。
对于第一个错误消息,数组之一是格式不正确的-参数,请求或响应。