我使用下面的代码将 XML 发送到我的 REST API。 $xml_string_data 包含适当的 XML,它被很好地传递给 mypi.php:
//set POST variables
$url = 'http://www.server.cu/mypi.php';
$fields = array(
'data'=>urlencode($xml_string_data)
);
//url-ify the data for the POST
$fields_string = "";
foreach($fields as $key=>$value)
{
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');
echo $fields_string;
//open connection
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_HTTPHEADER,array (
"Expect: "
));
//execute post
$result = @curl_exec($ch);
但是当我添加其他字段时:
$fields = array(
'method' => "methodGoPay",
'data'=>urlencode($xml_string_data)
);
它停止工作了。在 mypi.php 上,我根本没有收到任何更多的 POST 参数!
您能告诉我如何在一个 cURL 请求中发送 XML 和其他 post 参数吗?
请不要建议使用任何库,我不想用纯 PHP 来完成它。
最佳答案
我看不出这个脚本有什么问题。这很可能是 mypi.php 的问题。
最后你确实有一个额外的 &。也许这让服务器感到困惑? rtrim 不会更改 $field_string,它会返回修剪后的字符串。
后域可以这样简化,
$fields = array(
'method' => "methodGoPay",
'data'=> $xml_string_data // No encode here
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
关于php - 如何在 PHP 中通过 cURL 发送 XML 和其他 post 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697535/