【发布时间】:2013-12-14 01:18:20
【问题描述】:
我需要一些帮助。
我有一个生成 xml 文件的 php 脚本,然后我需要使用 POST 将其提交到另一台服务器。 XML 文件没问题,因为我可以从命令行使用 curl 手动上传它。
我的代码是:
$file = 'temp.xml';
file_put_contents($file, $output);
$post = array('extra_info' => '123456','file_contents'=>'@'.$file);
$url = "<URL>";
$chlead = curl_init();
curl_setopt($chlead, CURLOPT_USERPWD, "<USER>:<PASSWORD>");
curl_setopt($chlead, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($chlead, CURLOPT_URL, $url);
curl_setopt($chlead, CURLOPT_VERBOSE, 1);
curl_setopt($chlead, CURLOPT_POST,1);
curl_setopt($chlead, CURLOPT_POSTFIELDS, $post);
curl_setopt($chlead, CURLOPT_RETURNTRANSFER, false);
$response = curl_exec($chlead);
我可以通过以下方式手动将文件上传到正确处理的服务器:
curl -v -k -u <USER>:<PASSWORD> -X POST --upload-file temp.xml <URL>
我错过了什么?我正在使用 PHP 5.2.17。此外,如果有一种方法可以在不将 xml 文件写入磁盘的情况下执行此操作,那就太好了。
谢谢
【问题讨论】:
-
您需要像带有标题的表单一样提交它。看看这里的答案:stackoverflow.com/questions/3085990/…
-
谢谢布赖恩!我必须添加代码:
curl_setopt($chlead, CURLOPT_HTTPHEADER , array( 'Content-Type: text/xml', 'Content-Length: ' . strlen($output)));