【发布时间】:2018-03-07 15:29:09
【问题描述】:
如果我在浏览器上运行此链接,我会得到正确的 XML 格式响应:http://old.lb.lt/webservices/FxRates/FxRates.asmx/getCurrentFxRates?tp=EU
现在,如果我使用 cURL 对同一链接运行 POST 请求,并且当我转储响应时,我只会得到一个字符串。如果我做
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
然后响应显示在我的浏览器中,没有 XML 标记,但是如果我检查页面,我会看到所有 XML 标记,并且看起来不错。
我可以做些什么来解析这个包含所有 XML 标记的有效响应到变量?
我也将响应设置为:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'
));
如文档http://www.lb.lt/webservices/FxRates/FxRates.asmx?op=getCurrentFxRates 中所述(在页面的最底部)。
【问题讨论】:
-
响应没有任何问题,您只是将其显示为 HTML - 这就是为什么当您检查页面时它在其中包含标签的原因。你认为你有什么问题?
-
您的浏览器将直接 url 解释为 xml 并将其格式化以供人类阅读。在 PHP 中,它将内容抓取到字符串中并使用默认标题输出。您需要使用库或类将字符串转换为 XML 对象进行操作。或者在输出到浏览器之前设置输出
header('Content-Type: text/xml');。