我正在尝试使用cURL将xml发布到服务器而没有任何标题,但我似乎无法摆脱以下标题:
Content-Disposition: form-data; name="data"; filename="tempData.xml".
有谁知道如何删除这些标题并只发送文件?
代码如下:
$URL = www.myurl.com/process/php;
//get post data
$post = array("data"=>"@tempData.xml");
//add headers
/*$Headers = array
( "POST HTTP/1.0"
, "Accept: text/xml"
, "Content-type: text/xml"
);*/
//$Headers = array("");
//create curl instance and set options
$CH = curl_init($URL);
curl_setopt( $CH, CURLOPT_TIMEOUT, 60 ); //timeout after 60 seconds
curl_setopt( $CH, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $CH, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $CH, CURLOPT_HTTPHEADER, 0);
curl_setopt( $CH, CURLOPT_HEADER, 0);
curl_setopt( $CH, CURLOPT_POST, true );
curl_setopt( $CH, CURLOPT_POSTFIELDS, $post ); // add post fields
//echo curl_error($CH);
$output = curl_exec( $CH );
$info = curl_getinfo( $CH );
//print_r($info);
if($info['http_code'] != 200){
//header('HTTP/1.0 500 Could Not Send XML');
echo 'error ' . $info["http_code"];
curl_close($CH);
exit(1);
}
curl_close($CH)
答案 0 :(得分:0)
如果这样做的话,这是不可能的。
当您选择使用libcurl执行multipart formpost时,它实际上会根据规范执行formpost。它最初在RFC1867中指定,然后它已经指定Content-Disposition:应该存在于每个表单部分。
如果你想做你自己的不合规帖子,那么完全自己制作你自己的缓冲区,而不是依靠libcurl的multipart formpost支持。
最后我要说明你的注释掉的代码指定自定义标题是错误的,因为它在标题中包含了一个请求行。