PHP如何使用CURL
我需要执行这个命令PHP如何使用CURL,php,python,curl,Php,Python,Curl,我需要执行这个命令 root@debian:~# curl -X PUT -d '{ "date": "2.5.", "order": 2, "prize": 45 }' '[URL]' 在PHP(或Python)中。但是我不知道怎么做。我试过这个: $data = '{ "date": "2.5.", "order": 2, "prize": 45 }'; $data = json_encode($data); echo $data; $ch = curl_init([URL]); curl
root@debian:~# curl -X PUT -d '{ "date": "2.5.", "order": 2, "prize": 45 }' '[URL]'
在PHP(或Python)中。但是我不知道怎么做。我试过这个:
$data = '{ "date": "2.5.", "order": 2, "prize": 45 }';
$data = json_encode($data);
echo $data;
$ch = curl_init([URL]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
但这也带来了:
{ "error" : "Error: No data supplied." }
知道如何在PHP/Python中重现它吗?subprocess.call或subprocess.run将执行您需要的操作,尽管输出将转储到stdout,因此如果您想要操作返回的数据,还需要重定向它。不过,您也可以像其他一些评论者所建议的那样使用
subprocess.call或subprocess.run将执行您需要的操作,尽管输出将转储到stdout,因此如果您想要操作返回的数据,还需要重定向它。不过,您也可以像其他一些评论者所建议的那样使用
根据PHP文档
http\u build\u query
接受数组或对象作为参数。
另外,json\u encode
返回一个字符串:
因此,您需要改变使用它们的方式
此外,使用http\u build\u query
可能更可取,因为它对给定参数进行url编码:
因此,您需要将一个数组传递给http\u build\u query
函数以使其工作:
示例(来自上面的链接):
根据PHP文档
http\u build\u query
接受数组或对象作为参数。
另外,json\u encode
返回一个字符串:
因此,您需要改变使用它们的方式
此外,使用http\u build\u query
可能更可取,因为它对给定参数进行url编码:
因此,您需要将一个数组传递给http\u build\u query
函数以使其工作:
示例(来自上面的链接):
使用。您正在对已经存在的json字符串->错误语法进行json\u编码,并且如果您在POSI进行更改时发送纯json字符串,则还将删除http\u build\u查询,但仍然没有解决问题:/Use。您正在对一个已经存在的json字符串进行json\u编码->错误语法,如果您在POSI进行更改时发送一个纯json字符串,还可以删除http\u build\u查询,但仍然没有解决问题:/Wow这很有效,您救了我的命(和作业:D)。谢谢哇,这成功了,你救了我的命(还有工作:D)。谢谢
import subprocess
import tempfile
with tempfile.TemporaryFile() as tmp:
subprocess.call(["curl", "-X", "PUT", "-d", '{ "date": "2.5.", "order": 2, "prize": 45 }', '[URL]'], stdout=tmp)
tmp.seek(0)
data = tmp.read()
$url = "[URL]";
$data = array(
"date" => "2.5.",
"order" => "2",
"prize" => 45
);
$json_data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);
curl_close($ch);
$curl_parameters = array(
'param1' => $param1,
'param2' => $param2
);
$curl_options = array(
CURLOPT_URL => "http://localhost/service",
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $curl_parameters ),
CURLOPT_HTTP_VERSION => 1.0,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false
);
$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );
curl_close( $curl );