php - 将 PHP curl_setopt() 转换为 Python 请求和 CLI curl

标签 php python curl python-requests pycurl

我正在尝试将以下 PHP curl_setopt() 转换为 Python Requests 中的等效项 以及 CLI curl。对于 Python,如果在 Requests 中不可能, 我会使用 pycurl .

curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

这是有效的 PHP curl 代码:

$params = array(
    'username' => $username,
    'password' => $password
);

$params_string = json_encode($params);

$process = curl_init($url);
curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($process, CURLOPT_POSTFIELDS, $params_string);

$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);

$data = curl_exec ($process);

curl_close ($process);   

我不知道我需要在 Python 请求 中为这两个 PHP curl_setopt(s) 设置什么。

我在 CLI curl 中尝试了以下操作,但出现了一个Bad Request 错误:

AUTHENTICATE_DATA="usename=${USERNAME}&password=${PASSWORD}"

AUTHENTICATE_RESPONSE=$(curl \
  -X POST \
  -H 'Content-Type: application/json' \
  --data-urlencode "${AUTHENTICATE_DATA}" \
  -v \
  ${AUTHENTICATE_URL})

echo ${AUTHENTICATE_RESPONSE}

我需要什么?

谢谢,感谢您的帮助。

最佳答案

使用请求:

import requests

url = 'https://...'
username = 'username'
password = 'supersecret'

# curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
# PHP bashing time: Who in their right minds would create a function
# that spews its return value to stdout by default, unless explicitly
# instructed not to do so.
resp = requests.post(

    # $process = curl_init($url);
    url,

    # $params = array(
    #    'username' => $username,
    #    'password' => $password
    # );
    # $params_string = json_encode($params);
    # curl_setopt($process, CURLOPT_POSTFIELDS, $params_string);
    # $headers[] = 'Content-Type: application/json';
    # curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
    json=dict(username=username, password=password),

    # curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
    # note: you shouldn't do this, really
    verify=False,

)

data = resp.text
# or if you expect json response
data = resp.json()

关于php - 将 PHP curl_setopt() 转换为 Python 请求和 CLI curl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634825/

相关文章:

php - 我想在主页 WordPress 中显示自定义分类法列表

python - 带有子图的多个标题(副标题)

c - 使用给定的 url 在 Curl 中没有下载文件

azure - 使用 kubectl 执行 CURL

PHP 和 MySQL 编码和奇怪的标志

PHP - 'print/echo' 显示结束标记 - 或不输出

java - 将简单的 JAVA 代码转换为 PHP(数组)

python - Keras 提前停止回调错误,val_loss 指标不可用

python - 必须不断重新安装 python 模块 (Eclipse Che)?

Bash curl POST 二进制变量