在尝试使用pycurl库将带有curl的现有PHP api请求转换为Python时,遇到了一些问题。首先是原始的PHP代码:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.printdeal.com/api/products/0d1fce7e-245d-47fb-98bf-bea07f3ad16e/attributes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"API-Secret: MY_SECRET_API-KEY",
"User-ID: MY_USER_ID"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
然后这是到目前为止我翻译成Python的内容:
from io import BytesIO
b_obj = BytesIO()
crl = pycurl.Curl()
crl.setopt(pycurl.URL, "https://api.printdeal.com/api/products/0d1fce7e-245d-47fb-98bf-bea07f3ad16e/attributes")
crl.setopt(pycurl.ENCODING, "")
crl.setopt(pycurl.MAXREDIRS, 10)
crl.setopt(pycurl.TIMEOUT, 30)
crl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_1_1)
crl.setopt(pycurl.CUSTOMREQUEST, 'GET')
crl.setopt(pycurl.HTTPHEADER, [
"API-Secret: MY_SECRET_API-KEY",
"User-ID: MY_USER_ID"])
crl.setopt(pycurl.WRITEFUNCTION, b_obj.write)
crl.perform()
crl.close()
data = b_obj.getvalue()
print(data)
如您所见,在pycurl中不是RETURNTRANSFER的选项,我无法使用pycurl找到它的等效项或替代项。当我使用个人凭据执行此代码时,它将返回:
b'{"error":"Not Found"}'
Process finished with exit code 0
我应该添加或更改使用pycurl而不是curl进行成功的api请求?