python - 我想将文件作为 API POST 请求的附件发送

标签 python python-requests

我正在尝试通过 POST 请求发送候选人的文件 naturalHR API : 我已经使用 POSTMAN 尝试了相同的请求,并且效果很好。但是,当我尝试使用 python 集成 API 的 POST 请求来附加文件时,我收到一条错误,它的 cv 参数应该是一个文件(其 API 错误响应)。

源代码:

from pprint import pprint
import json
import requests
import urllib.request
headers = {
    'accept': 'application/json',
    'Authorization': api_key,
    'Host': 'api02.naturalhr.net',
    'Referer': 'https://api02.naturalhr.net/api/documentation',
    'Content-type': 'multipart/form-data',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
payLoad = dict()
payLoad["firstname"] = json_of_vals['firstname']
payLoad["surname"] = json_of_vals['surname']
payLoad["email"] = json_of_vals['email']
payLoad["cv"] = "Path/To/PDF_File"
files = {'file': "outfilename.pdf"}
api_url = "https://api02.naturalhr.net/api/v1/candidate"
res = requests.post(api_url, files=files, headers=headers, data=request_data)
print(res.content)

请不要将此标记为与此处已回答的问题重复,因为我已经通过使用文件作为请求的参数进行了测试,例如:

res = requests.post(api_url, files=files, headers=headers, data=request_data)

编辑: 我尝试过的答案:

Using Python Requests to send file and JSON in single request

最佳答案

我正在添加标题

'accept': 'application/json'

这不应该在那里,我只使用用户代理API key 进行了尝试,并且它按照要求工作得很好。

更正的代码:

from pprint import pprint
import json
import requests
import urllib.request
headers = {
    'Authorization': api_key,
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
payLoad = dict()
payLoad["firstname"] = json_of_vals['firstname']
payLoad["surname"] = json_of_vals['surname']
payLoad["email"] = json_of_vals['email']

files = {'file': "PATH/TO/FILE/FROM/LOCAL/DRIVE"}

api_url = "https://api02.naturalhr.net/api/v1/candidate"
res = requests.post(api_url, headers=headers, data=payLoad, files=files)
print("Status Code is: ", res.status_code)
print("Returned JSON Response is:\n")
pprint(res.text)

关于python - 我想将文件作为 API POST 请求的附件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242068/

相关文章:

python - 使用 Python 拆分和保存 csv 文件中的文本 block

python - 如何按字符串列表过滤 Pandas 列?

python - 发出请求时python中的SSL认证错误

python-3.x - 如何强制 python 的请求库超时(包括 DNS 查找)

python - 请求多值参数的url编码

Python:requests.exceptions.ConnectionError: ('Connection aborted.' , BadStatusLine ("' '",))

python - struct.pack(!i, 10) 结果在 Windows 上是 "00 00 00 0d 0a"

python - Combinatorics Counting Puzzle : Roll 20, 8面骰子,得到至少5个相同值的骰子的概率是多少

python - 使用 python-requests 从 DHL 获取跟踪详细信息

Python 请求 post 不发送字符串