我在使用Python请求时遇到了一些麻烦。这是我的代码:
fields={
"fields":{
"field1":{"test": "test"},
"field2": "test",
"field3":{"test": "test"}
}
}
try:
results = requests.post(
"http://www.fakenotrealatall.com",
data=json.dumps(fields),
headers={"content-type": "application/json"}
)
print results.headers['content-type']
return stuff
当我运行它时,我得到415错误,并且print语句显示内容类型是" text / html; charset = utf-8"。
为什么不将它设置为" application / json"?
答案 0 :(得分:1)
您收到415错误,因为“http://www.fakenotrealatall.com”的服务器返回415错误。根据{{3}},这意味着
服务器拒绝为请求提供服务,因为请求的实体采用所请求方法所请求资源不支持的格式。
显然,www.fakenotrealatall.com上的人不喜欢JSON。
results.headers['content-type']
的值是“text / html”,因为这也是服务器返回的内容。请记住,这是返回给您的数据类型,不您发送的数据类型。要看到这一点,请尝试:
print results.headers['content-type']
print results.request.headers['content-type']
注意请求如何具有JSON类型,但响应是HTML格式。
最后,要了解这一切是如何工作的,请尝试POST一个将接受JSON的网站,例如the HTTP standard:
import requests
import json
fields={
"fields":{
"field1":{"test": "test"},
"field2": "test",
"field3":{"test": "test"}
}
}
results = requests.post(
"http://httpbin.org/post",
data=json.dumps(fields),
headers={"content-type": "application/json"}
)
print results.status_code, results.reason
print results.headers['content-type']
print results.request.headers['content-type']