繁体   English   中英

使用PHP curl模仿CLI CLI curl

[英]Mimic CLI curl with PHP curl

我试图用php curl复制命令行curl。 某事不起作用,您知道为什么吗?

我要模仿的CLI版本

curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: textSearchAction" --data @searchRequest.xml http://somedomain/services/Service | tidy -xml -i

这就是我尝试过的

$rCurlSession = curl_init();
curl_setopt($rCurlSession, CURLOPT_URL, 'http://somedomain/services/Service');
curl_setopt($rCurlSession, CURLOPT_HEADER, true);
curl_setopt($rCurlSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($rCurlSession, CURLOPT_POSTFIELDS, file_get_contents('searchRequest.xml'));
$aHeaders = array(
    'Content-Type: text/xml;charset=UTF-8',
    'SOAPAction: textSearchAction',
);

curl_setopt($rCurlSession, CURLOPT_HTTPHEADER, $aHeaders);
$sResponse = curl_exec($rCurlSession);

第一个命令返回一个我期望的xml,最后一个给我一个错误消息xml。 它只说“未知错误”,所以我很难知道我的输入错误了。

您的脚本中缺少一些必要的curl参数。 使用以下内容(注意使用$xmlData ):

$xmlData = file_get_contents('searchRequest.xml');
$rCurlSession = curl_init();
curl_setopt($rCurlSession, CURLOPT_URL, 'http://somedomain/services/Service');
curl_setopt($rCurlSession, CURLOPT_HEADER, true);
curl_setopt($rCurlSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($rCurlSession, CURLOPT_POST, true);
curl_setopt($rCurlSession, CURLOPT_POSTFIELDS, $xmlData);
$aHeaders = array(
    'Content-Type: text/xml;charset=UTF-8',
    'SOAPAction: textSearchAction',
    'Content-length: '.strlen($xmlData),
);

curl_setopt($rCurlSession, CURLOPT_HTTPHEADER, $aHeaders);
$sResponse = curl_exec($rCurlSession);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM