python - 将 PHP Curl 转换为 Python 请求
问题描述
此代码在 PHP 中调用带有一些标头和数据的 curl 发布请求。
<?php
$api = 'someapi';
$method = 'somemethod';
$api_path = "someurl";
$data = array(
'start_datetime' => '2021-07-15 13:00:00',
'end_datetime' => '2021-07-15 13:20:00',
'token' => 'sometoken' // token from file
);
$params = array(
"api"=> $api,
"method"=>$method,
"data"=> json_encode($data)
);
$secure_key = "somesecret";
$header = array();
$header[] = 'SECUREKEY:'.$secure_key;
// call curl
$__curl_handle = curl_init();
curl_setopt($__curl_handle, CURLOPT_URL, $api_path);
curl_setopt($__curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($__curl_handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($__curl_handle, CURLOPT_POST,1);
curl_setopt($__curl_handle, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($__curl_handle, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($__curl_handle);
$errno = curl_errno($__curl_handle);
$errmsg = curl_error($__curl_handle);
$result_arr = array(
'response'=>$response,
'errno'=>$errno,
'errmsg'=>$errmsg
);
curl_close($__curl_handle);
echo $result_arr['response'];
?>
现在我需要在 python 项目中做同样的事情。由于我是 Python 新手,我可以请求一些帮助吗?
这是我的尝试:
api = 'someapi'
method = 'somemethod'
api_path = "someurl"
data = {
'start_datetime' : '2021-07-15 13:00:00',
'end_datetime' : '2021-07-15 13:20:00',
'token' : 'sometoken' // token from file
}
params = {
"api": api,
"method":method,
"data": json.dumps(data)
}
secure_key = "somesecret";
header = {
"SECUREKEY":secure_key
}
response = requests.post(api_path,
data=params,
headers=header)
print(response.json())
但它没有按预期工作。这个怎么做?
解决方案
对于任何cURL
请求,最好的测试工具是Postman,它是免费的。
您可以使用图形界面提出请求,您可以通过单击</>
图标将其转换为任何代码语言(也包括 Python)
我也在 PHP 中编写代码,但我相信这将为您提供 Python 代码
import requests
url = "someapi_url"
payload={'start_datetime': '2021-07-15 13:00:00',
'end_datetime': '2021-07-15 13:20:00',
'token': 'sometoken'}
files=[
]
headers = {
'SECUREKEY': '--SECUREKEY_VALUE--'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
推荐阅读
- angular - 提交后如何清除输入(重置表单)
- sql-server - 从文件夹中插入文件名并从文件名中检索日期 - SSIS
- r - 按组匹配另一个变量的第一行的变量的值
- django - Django 表单使用与 moels 字段不同名称的 html 元素
- node.js - 角度和节点应用程序中的 CORS 不起作用
- azure - 更新 Azure Service Fabric 证书。为什么是一级证书和二级证书?
- c++ - 在 C++ 中可以有一个虚拟类型吗?
- python - 如何计算图像噪声的标准偏差?
- android - 如何解决必需的问题:只读片段中的 androidx.fragment.app.Fragment
- apache-flink - 基于优先级或轮询方式从两个 flink dataStream 中消费