如何发布带有请求的json文件

时间:2018-08-10 16:03:34

标签: python-3.x curl python-requests

edit:抱歉,今天已经很漫长了。我以为我在说明中放了更多信息。这是我的代码:

import requests
import json

url = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21'
headers = {'Authorization' : ('username', 'password'), 'Accept' : 'application/json', 'Content-Type' : 'application/json'}
r = requests.post(url, data=open('tweets.json', 'rb'), headers=headers)

这是我收到的错误,我在正确的目录中,并且那里有100%的文件名为tweets.json。

FileNotFoundError: [Errno 2] No such file or directory: 'tweets.json'

我正在尝试使用Requests Python包将API请求写入IBM Watson。我已经尝试了几个小时,却没有运气。

我已经成功地使用cURL将POST写入api,但是我真的很努力地将其引入python,这是我的应用程序所使用的语言。

有人可以帮助我将此cURL请求转换为python请求吗?

curl -X POST -u "password:username" --header "Content-Type: application/json" --data-binary @tone.json "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21"

最好, 瑞安

1 个答案:

答案 0 :(得分:0)

尝试类似的方法-您需要获取并加载json数据,并且还需要以略有不同的方式进行身份验证:

import requests
import json
from requests.auth import HTTPBasicAuth

url = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21'
headers = {'Accept' : 'application/json', 'Content-Type' : 'application/json'}

with open('tweets.json') as f:
    data = json.loads(f.read())

r = requests.post(url, data=data, headers=headers, auth=HTTPBasicAuth('username', 'password'))

如果您的JSON文件非常大,则可以像在问题中一样传递数据,但这是更易读的IMO。