我有一个php curl请求,它给了我一个成功的回复。我想在python中转换它。
define("uname", "myusername");
define("pwd", "password");
define("turl", "https://mytestapp.com/api/v1/");
$Params = array(
"subject" => "test subject",
"contents" => "This is a test case.",
"requester_id" => "2",
"channel" => "MAIL",
"channel_id" => "1"
);
$json = json_encode($Params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_URL, turl);
curl_setopt($ch, CURLOPT_USERPWD, uname.":".pwd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
if($output=== FALSE) {
die(curl_error($ch));
}
curl_close($ch);
print_r(json_decode($output, true))
尝试使用pycurl使用相同的curl选项,但最终没有用,它给出了错误的请求错误。我无法追踪那里的错误。
import pycurl
import json
import urllib
params = [{"subject" : "test subject",
"contents" : "This is a test case.",
"requester_id" : "2",
"channel" : "MAIL",
"channel_id" : "1"
}]
json_to_send = json.dumps(params)
curlClient = pycurl.Curl()
curlClient.setopt(curlClient.FOLLOWLOCATION,True)
curlClient.setopt(curlClient.URL, url)
curlClient.setopt(curlClient.MAXREDIRS, 10)
curlClient.setopt(curlClient.USERPWD, "myusername:mypassword")
curlClient.setopt(curlClient.SSL_VERIFYPEER, False)
curlClient.setopt(curlClient.POSTFIELDS, json_to_send)
curlClient.setopt(curlClient.CUSTOMREQUEST, "POST")
curlClient.setopt(curlClient.POST, True)
curlClient.setopt(curlClient.FAILONERROR, True)
curlClient.perform()
有没有更好的替代方法在python中复制相同的
谢谢你