【问题标题】:Using the POST URI in Python 3在 Python 3 中使用 POST URI
【发布时间】:2020-04-08 22:06:03
【问题描述】:

我正在尝试将数据发布到通过 URL 获取文本数据的网站:"http://data.bioontology.org/annotator?text=" + theTextData

我想使用 POST URI 来获取数据。这是我的代码:

def get_annotations(text, url):
    headers = [('Authorization', 'apikey token=' + API_KEY)]
    data = text

    response = requests.request("POST",url,headers=headers,data=data)
    return response.text.encode('utf-8')

annotations = get_annotations(text, "http://data.bioontology.org/annotator?text=" + urllib.parse.quote(text))

我在运行时收到此错误:

Traceback (most recent call last):
...
    response = requests.request("POST",url,headers=headers,data=data)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 516, in request
    prep = self.prepare_request(req)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/sessions.py", line 449, in prepare_request
    p.prepare(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/models.py", line 315, in prepare
    self.prepare_headers(headers)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/models.py", line 447, in prepare_headers
    for header in headers.items():
AttributeError: 'list' object has no attribute 'items'

我该如何解决这个问题?我是否错误地使用了 POST?

【问题讨论】:

  • 我猜你正在使用import requests。首先 - 您不需要发布请求,您需要获取请求。第二——使用requests.get()
  • @Babydesta 我的数据太长了,所以如果我使用 get URI 我会收到 HTTP 414 错误

标签: python python-3.x post get uri


【解决方案1】:

您的标题应该是一个字典,而不是列表中的元组。

headers = {'Authorization': 'apikey token=' + API_KEY}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多