1

我需要发送以下请求,它是在 xml 末尾带有用户名和密码的 XML。当我粘贴到浏览器中时,我可以让它作为 URL 工作:

URL?XML=<>...</>&user=123456&password=123456

但是当我尝试创建 curl 调用时,它说这是一个无效的 XML 请求。

我尝试在 POSTFIELDS 中使用用户和密码。我还尝试在 $trial ='&user=123456&password=123456' 之前将它们设置为变量,但似乎仍然无法正常工作。

$xml = <<<ENDOFXML
<?xml version="1.0" encoding="UTF-8"?><xmldata>...</xmldata>
ENDOFXML;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).urlencode('&user=123456&password=123456'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_close($ch);
4

1 回答 1

1

这是错误的:

curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).urlencode('&user=123456&password=123456'));

urlencode 仅对变量名称和值进行编码(或者如果您知道变量名称可以,则仅对值进行编码):

curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.urlencode($xml).'&user=' . urlencode('123456').'&password=' . urlencode('123456'));
于 2013-08-20T08:30:04.493 回答