我正在尝试从php脚本运行curl命令但它没有按预期工作。问题出在curl命令或用.htacccess文件编写的url重写规则中。
curl命令文件中的代码:我只是尝试使用此命令发布数据并期望返回一个数组。
<?php
$data=array(
'product_name' =>'Television',
'price' => 1000,
'quantity' => 10,
'seller' =>'XYZ Traders'
);
$url = 'http://localhost/API2/products';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response_json = curl_exec($ch);
curl_close($ch);
$response=json_decode($response_json, true);
echo $response;
?>
我的.htaccess文件用于url rewritng,这意味着http://localhost/API2/products应该用于CRUD操作。网址规则是:
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^products/?$ products.php [NC,L]
RewriteRule ^products/([0-9]+)/?$ products.php?product_id=$1 [NC,L]
因此,如果您可以帮助找到问题,就像我运行curl命令file.php一样,它不会返回任何内容,也不会执行代码。
答案 0 :(得分:1)
问题是,当你应该发布一个字符串时,你正试图发布一个数组($ data)。
要解决此问题,请在下面添加URLify功能。
function URLify( $arr, $encode = FALSE ) {
$fields_string = '';
foreach( $arr as $key => $value ) {
if ( $encode ) {
$key = urlencode( $key );
$value = urlencode( $value );
}
$fields_string .= $key . '=' . $value . '&';
}
$fields_string = substr( $fields_string, 0, (strlen($fields_string)-1) );
return $fields_string;
}
然后添加:
$data = URLify( $data, TRUE );
以上:
$url = 'http://localhost/API2/products';