gpt4 book ai didi

python - 在 Python 中发送数据 Curl/Json

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:09 34 4
gpt4 key购买 nike

我正在尝试在 python 中发出这两个请求:

请求 1:

 curl -X POST -H "Content-Type: application/json" -d '{ "auth_token": "auth1", "widget":   "id1", "title": "Something1",  "text": "Some text", "moreinfo": "Subtitle" }'   serverip

请求 2:

 vsphere_dict = {}
vsphere_dict['server_name'] = "servername"
vsphere_dict['api_version'] = apiVersion
vsphere_dict['guest_count'] = guestCount
vsphere_dict['guest_on'] = guestOnLen
vsphere_dict['guest_off'] = guestOffLen

#Convert output to Json to be sent
data = json.dumps(vsphere_dict)

curl -X POST -H "Content-Type: application/json" -d 'data' serverip

它们似乎都不起作用。有什么方法可以用 Python 发送它们吗?

更新:

我无法处理的部分是通行证和小部件。我尝试了以下但没有成功:

import urllib2
import urllib

vsphere_dict = dict(
server_name="servername",
api_version="apiVersion",
guest_count="guestCount",
guest_on="guestOnLen",
guest_off="guestOffLen",
)

url = "http://ip:port"

auth = "authid89"
widget = "widgetid1"

# create request object, set url and post data
req = urllib2.Request(auth,url, data=urllib.urlencode(vsphere_dict))
# set header
req.add_header('Content-Type', 'application/json')
# send request
response = urllib2.urlopen(req)**

导致“urllib2.HTTPError:HTTP 错误 500:内部服务器错误”

关于如何正确传递身份验证和小部件的任何想法?

更新:

为了看看有什么不同,我在本地启动了一个 nc 服务器。以下是结果:

使用此代码更正 curl 请求:

 curl -X POST -H "Content-Type: application/json" -d '{ "auth_token": "auth", "widget": "widgetid", "title": "Something", "text": "Some text", "moreinfo": "Subtitle" }' http://localhost:8123

发送这个有效的:

 POST / HTTP/1.1
User-Agent: curl/7.21.0 (i386-redhat-linux-gnu) libcurl/7.21.0 NSS/3.12.10.0 zlib/1.2.5 libidn/1.18 libssh2/1.2.4
Host: localhst:8123
Accept: */*
Content-Type: application/json
Content-Length: 165

{ "auth_token": "token", "widget": "widgetid", "title": "Something", "text": "Some text", "moreinfo": "Subtitle" }

并使用此代码请求

  import requests
import simplejson as json

url = "http://localhost:8123"
data = {'auth_token': 'auth1', 'widget': 'id1', 'title': 'Something1', 'text': 'Some text', 'moreinfo': 'Subtitle'}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)

发送这个不起作用:

 POST / HTTP/1.1
Host: localhst:8123
Content-Length: 108
Content-type: application/json
Accept-Encoding: gzip, deflate, compress
Accept: */*
User-Agent: python-requests/2.0.1 CPython/2.7.0 Linux/2.6.35.14-106.fc14.i686

{"text": "Some text", "auth_token": "auth1", "moreinfo": "Subtitle", "widget": "id1", "title": "Something1"}

最佳答案

Requests为您提供在 Python 中处理 HTTP 请求的最简单但(非常)强大的方法。

也许尝试这样的事情:

import requests
import simplejson as json

url = "http://ip:port"
data = {'auth_token': 'auth1', 'widget': 'id1', 'title': 'Something1', 'text': 'Some text', 'moreinfo': 'Subtitle'}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)

如果 API 请求身份验证:

r = requests.post(url, data=json.dumps(data), headers=headers, auth=('user', 'pass'))

有关详细信息,请参阅[请求授权]。

关于python - 在 Python 中发送数据 Curl/Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211990/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com