我一直在尝试执行XML请求。我遇到过很多问题,但我都解决了。但是这个我解不出来。脚本如下:
$url ="WebServiceUrl";
$xml="XmlRequest";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
它给了我这个错误:
系统。InvalidOperationException:请求格式无效:text/xml。
http://webservicehandler . coreprocessrequest () 在这方面我还是个新手。所以别对我太苛刻:)谢谢。看起来您发送的内容为text/xml,这不是它想要的。查找此web服务的文档(例如WSDL文档),并找出它接受的数据格式。
确保它不是真的说它将在XML中响应,在接收到作为标准HTML POST变量的请求后。
HTTP POST方法有两种主要的内容类型:application/x-www-form-urlencoded和multipart/form-data。
内容类型决定CURLOPT_POSTFIELDS的格式应该是什么。如果您使用默认值,即"application/x-www-form-urlencoded",则可能需要使用build_http_query()来构造url编码的查询字符串。
如果你正在发送非ascii数据,你可以传递一个关联数组,其中包含与字段名和值相匹配的键。使用这种技术将导致请求被发出一个多部分/formdata内容类型。
在这一点上,听起来你的下一步应该是弄清楚API期望哪些字段。
application/x-www-form-urlencoded或multipart/form-data?