首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python发送JSON请求

使用Python发送JSON请求
EN

Stack Overflow用户
提问于 2011-12-26 17:31:41
回答 3查看 76.9K关注 0票数 25

我是web服务的新手,正在尝试使用python脚本发送以下基于JSON的请求:

http://myserver/emoncms2/api/post?apikey=xxxxxxxxxxxxx&json={power:290.4,temperature:19.4}

如果我将上面的内容粘贴到浏览器中,它会按预期工作。但是,我很难从Python发送请求。以下是我正在尝试的内容:

import json
import urllib2
data = {'temperature':'24.3'}
data_json = json.dumps(data)
host = "http://myserver/emoncms2/api/post"
req = urllib2.Request(host, 'GET', data_json, {'content-type': 'application/json'})
response_stream = urllib2.urlopen(req)
json_response = response_stream.read()

如何将apikey数据添加到请求中?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-26 18:34:08

您可以使用requests而不是urllib2。这个新的python库写得非常好,使用起来也更简单、更直观。

要发送json数据,您可以使用类似以下代码的代码:

import json
import requests
data = {'temperature':'24.3'}
data_json = json.dumps(data)
payload = {'json_payload': data_json, 'apikey': 'YOUR_API_KEY_HERE'}
r = requests.get('http://myserver/emoncms2/api/post', data=payload)

然后,您可以检查r以获得http状态代码、内容等

票数 38
EN

Stack Overflow用户

发布于 2019-03-27 22:47:35

尽管这不能准确地回答OPs的问题,但这里应该提到的是,requests模块有一个json选项,可以像这样使用:

import requests

requests.post(
    'http://myserver/emoncms2/api/post?apikey=xxxxxxxxxxxxx',
    json={"temperature": "24.3"}
)

它等同于卷曲:

curl 'http://myserver/emoncms2/api/post?apikey=xxxxxxxxxxxxx' \
    -H 'Content-Type: application/json' \
    --data-binary '{"temperature":"24.3"}'
票数 4
EN

Stack Overflow用户

发布于 2011-12-26 19:10:35

也许问题是json.dumps放入了",而在你放入url的json中没有"s。例如:

data = {'temperature':'24.3'}
print json.dumps(data)

打印:

{"temperature": "24.3"}

而不是:

{temperature: 24.3}

就像你在url里写的一样。

解决这个问题的一种方法(容易出问题)是这样做:

json.dumps(data).replace('"', '')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8634473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档