当我向网站发送HTTP帖子时,我的网络调试器会收到类似的回复
payload =
{
'name': 'simpson'
, 'color': 'red'
, 'color': 'orange'
, 'color': 'blue'
, 'color': 'orange'
'food' : 'pizza'
}
但是在python中,当我发出相同的请求并执行r.headers时,我得到了这个回复
payload =
{
'name': 'simpson'
, 'color': 'orange'
'food' : 'pizza'
}
答案 0 :(得分:0)
该格式是有效的JSON,但它包含无法用JSON表示的信息。
解决方案是不使用JSON,而是编写一个使用数据点对的列表(2个值元组)的编码器。
更新
data = [
('name', 'simpson'),
('color', 'red'),
('color', 'orange'),
...
('food', 'pizza'),
]
content = "{%s}" % ', '.join("'%s': '%s'" % pair for pair in data)
POST内容。
答案 1 :(得分:0)
这取决于您提出请求的方式。实际上,HTTP响应主体始终是一个可以解释为JSON或其他内容的文本,具体取决于您使用的请求。可能你的库试图创建给定数据和错误的JSON,因为这些数据不能被解释为JSON,因为它包含属于同一个键的几个值。我建议你提取原始响应文本并以合适的方式解析它。例如,您可以使用httplib
来请求:
import httplib
conn = httplib.HTTPConnection("www.thehost")
conn.request("POST", "/post/url/you/request", "data1=q&data2=w", {...some hreaders...}
response = conn.getresponse()
body = response.read() # body is the text you need, it's a string
response.close()
conn.close()