1

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

有人可以帮我理解吗?

4

0 回答 0