XML发布的值突然“丢失”了text / xml内容类型

时间:2013-03-08 11:39:36

标签: php rest symfony

我一直在开发一个“接口”,我的一些客户端,可以调用一个API传递给它一个XML结构并接收另一个XML。

我一直在创建路线,方法等,并尝试使用cURL发布我的数据:一切都像魅力一样。

BUT

....如果我将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发布的参数)

有人可以帮我理解吗?

0 个答案:

没有答案