【问题标题】:PHP. how to send ONLY xml text in POST body use curl? [duplicate]php。如何在 POST 正文中使用 curl 仅发送 xml 文本? [复制]
【发布时间】:2016-01-31 20:59:23
【问题描述】:

我需要在 POST 正文中发送 xml(它必须只包含 xml 文本)。 我使用这样的代码,但我不知道如何转义 '<?xml''?>' 等字符。

<?php

$url = 'http://' . $_SERVER[ 'SERVER_NAME' ] . '/api/setExchangeRate/';
$xmlcontent = "<?xml version="1.0" encoding="WINDOWS-1251"?>" .
    '<Data>
    <Off UID="0001">
    <SetupDateTime>DD MM YYYY HH:MM</SetupDateTime>
    <Currency CODE="840">
    <Buy>67.50</Buy>
    <Sell>67.50</Sell>
    </Currency>
    <Currency CODE="978">
    <Buy>75.40</Buy>
    <Sell>77.10</Sell>
    </Currency>
    </Off>
    </Data>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlcontent);
$content=curl_exec($ch);

print_r( $content );

而服务器端的print_r( $_POST ) 返回此错误代码:

(
    [<?xml_version] => "1.0" encoding="WINDOWS-1251"?><Data>
<Off UID="0001">
<SetupDateTime>DD MM YYYY HH:MM</SetupDateTime>
<Currency CODE="840">
<Buy>67.50</Buy>
<Sell>67.50</Sell>
</Currency>
<Currency CODE="978">
<Buy>75.40</Buy>
<Sell>77.10</Sell>
</Currency>
</Off>
</Data>
)

【问题讨论】:

  • 在开发过程中,聆听 PHP 必须告诉您的任何信息、警告甚至错误都非常有用。当给出准确的错误消息时,这通常会导致更具体的编程问题更直接的解决方案。我们在现场为一些 PHP 调试技术提供的一个参考问题是 How to get useful error messages in PHP?

标签: php xml


【解决方案1】:

你不能在引号中使用相同类型的引号而不转义它们:

错误:

"<?xml version="1.0" encoding="WINDOWS-1251"?>"

应该是:

"<?xml version=\"1.0\" encoding=\"WINDOWS-1251\"?>"

或者只是用单引号替换外面的双引号:

'<?xml version="1.0" encoding="WINDOWS-1251"?>'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多