我一直在开发一个“接口”,我的一些客户端,可以调用一个API传递给它一个XML结构并接收另一个XML。
我一直在创建路线,方法等,并尝试使用cURL发布我的数据:一切都像魅力一样。
....如果我将Content-Type: text/xml; charset=utf-8
添加到请求的标题中,突然,在POST
变量中,已经没有任何内容了。
知道这里发生了什么事吗?
显然我不添加任何代码,它非常简单,由路由(标准symfony2路由),方法(转储POST)和包含xml的调用组成。 这是电话代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, 'xxxxxxx:yyyyyy'); //where xxxxxx:yyyyy is setted but now censored
curl_setopt($ch, CURLOPT_URL, $this->url); // set url to post to
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; charset=utf-8")); //without this all works
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->message);
其中$message
就像这样(只是一个例子)
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<Message Option="1">Option 1</Message>
</ROOT>
经过几天的调试,头痛等等,我发现了一些能让我感觉生气的东西,但这对我来说听起来很奇怪。
如果我记录传入的请求,似乎没有发布给我(即使我发布了一些xml)。
但是如果我在记录所有传入请求之前添加$logger->debug(__CLASS__.' '.$this->get("request")->getContent());
,则会记录下一个请求以及我发布的所有参数。
这听起来像是一种“懒散的装载”。所以,通过调用$this->get("request")->getContent()
进入我的控制器,我可以得到我要求的内容(xml发布的参数)
有人可以帮我理解吗?