gpt4 book ai didi

python - 如何使用 Python 进行基本的 REST Post 请求?

转载 作者:行者123 更新时间:2023-12-01 05:44:51 26 4
gpt4 key购买 nike

我在使用 Requests 时遇到问题

我正在测试的API指示参数device_info要POSTED在消息正文中。它还说 device_info 作为表单字段。在 Requests 的所有文档中除了将名称与 json 中的值放在一起之外,我找不到如何向参数添加“名称”。这是我尝试过的。

import requests
import json

loginPayload = {'device_info':{'app-id':'fc','os-type':'ios'}}
loginHeaders = {'content-type': 'application/json','Authorization':'Basic base64here'}
loginUrl = "http://subdomain.test.com/endpoint/method"
loginPost = requests.post(loginUrl, params=json.dumps(loginPayload), headers=loginHeaders)

print loginPost.text

我尝试将 params= 更改为 data= 但没有成功。

我得到的回复是:

{
"response": {
"message": "Parameter 'device_info' has invalid value ()",
"code": 400,
"id": "8c4c51e4-9db6-4128-ad1c-31f870654374"
}
}

编辑:

去新的地方!我没有修改我的代码,如下所示:

import requests

login = 'test'
password = 'testtest'
url = "http://subdomain.domain.com/endpoint/method"

authentication = (login,password)
payload = {'device_info': {'device_id': 'id01'}}
request = requests.post(url, data=payload, auth=authentication)

print request.text

产生:

{
"response": {
"message": "Parameter 'device_info' has invalid value (device_id)",
"code": 400,
"id": "e2f3c679-5fca-4126-8584-0a0eb64f0db7"
}
}

问题出在哪里?我是否没有按照要求的格式提交?

已编辑:解决方案是将我的参数更改为:

{
"device_info": "{\"app-id\":\"fc\",\"os-type\":\"ios\",\"device_id\":\"myDeviceID1\"}"
}

最佳答案

这里有几个问题:

  • 您并没有说您要发布的网站需要 JSON 数据,事实上您在评论中说“所需的编码是‘application/x-www-form-urlencoded’。
  • params 指的是查询字符串的参数。您需要的是 data 参数。

因此,如果您的应用程序正在寻找“application/x-www-form-urlencoded”数据,您不应该:

  • 设置Content-Type header
  • 对负载数据使用 json.dumps

您应该执行以下操作:

import requests

login_payload = {'device_info': {'app-id': 'fc', 'os-type': 'os'}}
authentication = (login, password) # Anyone who sees your authorization will be able to get this anyway
url = 'http://example.com/login'
response = requests.post(url, data=login_payload, auth=authentication)

我不知道是否有采用 x-www-form-urlencoded 数据的 RESTful API,但您也可能错误地描述了您的问题。你没有给我们太多继续下去的机会,也没有给我更多的只是猜测的能力。因此,根据您所说的其他内容,这绝对是我的最佳猜测。

关于python - 如何使用 Python 进行基本的 REST Post 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407074/

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