如何使用 Requests 模块 POST API Python 3 中的代码?不断收到 405 错误
How to POST this API code in Python 3 with Requests module? Keep getting 405 error
我想将 API 用于 link 缩短网站。我知道给出的示例在 curl 中 -H
表示有一个 header 以及 PUT
表示它正在发布,但我不能无论我尝试多少,似乎都能得到我想要的结果。我所能做的就是得到一个 405 错误或者中断它。
我在 Windows 上 Python 3 并且已经安装了 requests
。
For developers Shorte.st prepared API which returns responses in JSON format.
Currently there is one method which can be used to shorten links on behalf of your account.
Take a look on the sample below to learn how to use our API.
curl -H "public-api-token: (my token)" -X PUT -d
"urlToShorten=google.com" https://api.shorte.st/v1/data/url
When received,
{"status":"ok","shortenedUrl":"http:\/\/sh.st\/XXXX"}
我尝试了一些东西,
import requests
import json
gogo = { 'public-api-token: (my token)' : 'urlToShorten=google.com'}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
向我展示了一个 HTML 错误 405 的网页。
import requests
import json
gogo = { 'public-api-token' : '(my token)', 'urlToShorten=' : 'google.com'}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
还显示了一个错误 405 的网页。
我现在知道 -H
是给 header 的,我在使用它的同时仍然只是让我获取页面。
import requests
import json
headers = { 'public-api-token' : '(my token)' }
gogo = {"urlToShorten" : "google.com"}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo), headers=headers)
print (yep.text)
又一次尝试 405
gogo = {"public-api-token: (my token)" : "urlToShorten=google.com"}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
如果我去掉文字,即使这样也只是给我一个完整的 html page/405。
headers = { "public-api-token: (my token)" : "urlToShorten=google.com" }
yep = requests.post('https://api.shorte.st/v1/data/url', headers=headers)
print (yep.text)
您正在将 PUT 负载放入 header。将它放在 body 中。您的负载 不是 JSON,因此没有必要尝试这样对待它。
需要将header指定为字典,其中header名称和令牌作为键和值。有效载荷的参数可以用同样的方式处理。
你也用错了requests
方法;要发送 PUT 请求,请改用 put
function:
headers = {'public-api-token': '(my token)'}
payload = {'urlToShorten': 'google.com'}
response = requests.put(
'https://api.shorte.st/v1/data/url',
data=payload, headers=headers)
print(response.json())
response
object 有一个 json()
method 来解码 API 返回的 JSON 数据;它将为您提供对应于 JSON 文本的 Python 数据结构。
我没有您正在使用的服务的令牌;我使用 httpbin.org
service 创建了一个演示;它反映了作为 JSON 响应发送的内容:
>>> import requests
>>> headers = {'public-api-token': '(my token)'}
>>> payload = {'urlToShorten': 'google.com'}
>>> response = requests.put(
... 'http://httpbin.org/put',
... data=payload, headers=headers)
>>> from pprint import pprint
>>> pprint(response.json())
{u'args': {},
u'data': u'',
u'files': {},
u'form': {u'urlToShorten': u'google.com'},
u'headers': {u'Accept': u'*/*',
u'Accept-Encoding': u'gzip, deflate',
u'Content-Length': u'23',
u'Content-Type': u'application/x-www-form-urlencoded',
u'Host': u'httpbin.org',
u'Public-Api-Token': u'(my token)',
u'User-Agent': u'python-requests/2.5.0 CPython/2.7.9 Darwin/14.1.0'},
u'json': None,
u'origin': u'94.118.96.0',
u'url': u'http://httpbin.org/put'}
如果将其与 curl
向同一个 URL 发送 PUT
请求所产生的输出进行比较,您会看到产生了相同的结果:
$ curl -H "public-api-token: (my token)" -X PUT \
-d "urlToShorten=google.com" http://httpbin.org/put
{
"args": {},
"data": "",
"files": {},
"form": {
"urlToShorten": "google.com"
},
"headers": {
"Accept": "*/*",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"Public-Api-Token": "(my token)",
"User-Agent": "curl/7.37.1"
},
"json": null,
"origin": "94.118.96.0",
"url": "http://httpbin.org/put"
}
我想将 API 用于 link 缩短网站。我知道给出的示例在 curl 中 -H
表示有一个 header 以及 PUT
表示它正在发布,但我不能无论我尝试多少,似乎都能得到我想要的结果。我所能做的就是得到一个 405 错误或者中断它。
我在 Windows 上 Python 3 并且已经安装了 requests
。
For developers Shorte.st prepared API which returns responses in JSON format.
Currently there is one method which can be used to shorten links on behalf of your account.
Take a look on the sample below to learn how to use our API.
curl -H "public-api-token: (my token)" -X PUT -d "urlToShorten=google.com" https://api.shorte.st/v1/data/url
When received,
{"status":"ok","shortenedUrl":"http:\/\/sh.st\/XXXX"}
我尝试了一些东西,
import requests
import json
gogo = { 'public-api-token: (my token)' : 'urlToShorten=google.com'}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
向我展示了一个 HTML 错误 405 的网页。
import requests
import json
gogo = { 'public-api-token' : '(my token)', 'urlToShorten=' : 'google.com'}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
还显示了一个错误 405 的网页。
我现在知道 -H
是给 header 的,我在使用它的同时仍然只是让我获取页面。
import requests
import json
headers = { 'public-api-token' : '(my token)' }
gogo = {"urlToShorten" : "google.com"}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo), headers=headers)
print (yep.text)
又一次尝试 405
gogo = {"public-api-token: (my token)" : "urlToShorten=google.com"}
yep = requests.post('https://api.shorte.st/v1/data/url',
data=json.dumps(gogo))
print (yep.text)
如果我去掉文字,即使这样也只是给我一个完整的 html page/405。
headers = { "public-api-token: (my token)" : "urlToShorten=google.com" }
yep = requests.post('https://api.shorte.st/v1/data/url', headers=headers)
print (yep.text)
您正在将 PUT 负载放入 header。将它放在 body 中。您的负载 不是 JSON,因此没有必要尝试这样对待它。
需要将header指定为字典,其中header名称和令牌作为键和值。有效载荷的参数可以用同样的方式处理。
你也用错了requests
方法;要发送 PUT 请求,请改用 put
function:
headers = {'public-api-token': '(my token)'}
payload = {'urlToShorten': 'google.com'}
response = requests.put(
'https://api.shorte.st/v1/data/url',
data=payload, headers=headers)
print(response.json())
response
object 有一个 json()
method 来解码 API 返回的 JSON 数据;它将为您提供对应于 JSON 文本的 Python 数据结构。
我没有您正在使用的服务的令牌;我使用 httpbin.org
service 创建了一个演示;它反映了作为 JSON 响应发送的内容:
>>> import requests
>>> headers = {'public-api-token': '(my token)'}
>>> payload = {'urlToShorten': 'google.com'}
>>> response = requests.put(
... 'http://httpbin.org/put',
... data=payload, headers=headers)
>>> from pprint import pprint
>>> pprint(response.json())
{u'args': {},
u'data': u'',
u'files': {},
u'form': {u'urlToShorten': u'google.com'},
u'headers': {u'Accept': u'*/*',
u'Accept-Encoding': u'gzip, deflate',
u'Content-Length': u'23',
u'Content-Type': u'application/x-www-form-urlencoded',
u'Host': u'httpbin.org',
u'Public-Api-Token': u'(my token)',
u'User-Agent': u'python-requests/2.5.0 CPython/2.7.9 Darwin/14.1.0'},
u'json': None,
u'origin': u'94.118.96.0',
u'url': u'http://httpbin.org/put'}
如果将其与 curl
向同一个 URL 发送 PUT
请求所产生的输出进行比较,您会看到产生了相同的结果:
$ curl -H "public-api-token: (my token)" -X PUT \
-d "urlToShorten=google.com" http://httpbin.org/put
{
"args": {},
"data": "",
"files": {},
"form": {
"urlToShorten": "google.com"
},
"headers": {
"Accept": "*/*",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"Public-Api-Token": "(my token)",
"User-Agent": "curl/7.37.1"
},
"json": null,
"origin": "94.118.96.0",
"url": "http://httpbin.org/put"
}