作者:蜜蜜鱼鱼_270 | 来源:互联网 | 2023-05-21 14:53
1> Martijn Piet..:
您将PUT有效负载放在标头中.把它放在身体里.您的有效负载不是 JSON,因此无需尝试对其进行处理.
标题需要指定为字典,标题名称和标记为键和值.可以以相同的方式处理有效载荷的参数.
你也使用了错误的requests
方法; 要发送PUT请求,请使用该put
功能:
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
对象有一个json()
方法来解码API返回的JSON数据; 它将为您提供与JSON文本相对应的Python数据结构.
我没有您正在使用的服务的令牌; 我使用该httpbin.org
服务创建了一个演示; 它反映了作为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
向PUT
同一URL 发送请求而生成的输出进行比较,您将看到生成相同的结果:
$ 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"
}