Доступ к базе данных VBA, отправка XML на сервер php изменений & в ["amp_

ws8 спросил: 07 октября 2018 в 12:04 в: php

У меня проблема с чтением XML в php, отправляемом из базы данных доступа, когда тело содержит & amp ;. Когда, когда я получаю контент, который содержит & в теле кажется, что & преобразуется в ["amp; где-то в процессе, и в результате весь xml искажается. Это пример того, что я отправляю и получаю:

xml = "<?xml version='1.0' encoding='utf-8'?><query><author>John Steinbeck</author></query>"Dim objHTTP As New ServerXMLHTTP60
objHTTP.Open "POST", "http://localhost/sandpit/testxml.php", False      
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"      
objHTTP.send "request=" & xml

Файл php это просто простой эхо-запрос для тестирования:

<?php echo "<xmp>posted: ";var_dump($_REQUEST);echo "</xmp>"; ?>

Когда тело автора не содержит амперсанда, результат в PHP:

["request"]=>
    string(84) "<?xml version='1.0' encoding='utf-8'?><query><author>John 
    Steinbeck</author></query>"
    }

Однако, если я изменю строку xml на:

xml = "<?xml version='1.0' encoding='utf-8'?><query><author>John &amp; Steinbeck</author></query>"

, я получу следующий результат:

posted: array(2) {
    ["request"]=>
    string(41) "<?xml version='1.0'?><query><author>John "
    ["amp;_Steinbeck</author></query>"]=>
    string(0) ""
}

Вы можете увидеть выше что & преобразуется в ['amp ....

Также попытался использовать CDATA со следующим результатом:

posted: array(2) {
    ["request"]=>
    string(68) "<?xml version='1.0' encoding='utf-8'?><query><author><! 
    [CDATA[ John "
    ["Steinbeck]]></author></query>"]=>
    string(0) ""

}

Кажется, все после того, как амперсанд в конец строки xml заключен в ["..."], что портит xml.

Также попытался изменить тип содержимого на text / xml и application / xml в этом случае я получаю пустую строку.

Я проверил отправку того же xml с CURL в php и отлично работает, используя тип содержимого text / xml и даже text / html.

Anyone знаете, в чем проблема?


0 ответов