我一直在开发一个“接口”,它是我的一些客户,可以调用一个 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 发布的参数)
有人可以帮我理解吗?