читать входящие xml в Coldfusion - PullRequest
0 голосов
/ 09 июля 2020

Мне нужно написать сценарий, действующий как РОЗЕТКА. клиент отправляет xml на мою конечную точку, мой скрипт проверяет, является ли это допустимым xml. Я могу сделать это, если это загрузка формы (зная имя входного файла). Но что, если мы не знаем имени входа? как захватить файл и проверить, действителен ли он xml?

1 Ответ

1 голос
/ 10 июля 2020
<!--- that's the POST request that was sent to us (supposed to contain XML in body) --->
<cfset httpRequestData = getHttpRequestData()>

<!--- NOTE: you don't need to check the Content-Type, but I consider it to be best practise --->
<cfif (
    structKeyExists(httpRequestData.Headers, "Content-Type") and
    (httpRequestData.Headers["Content-Type"] contains "/xml") <!--- covers "application/xml" and "text/xml" --->
)>

    <!--- in case we receive raw bytes, encode them --->
    <cfif isBinary(httpRequestData.Content)>
        <cfset httpBody = toString(httpRequestData.Content, "UTF-8")>
    <cfelse>
        <cfset httpBody = httpRequestData.Content>
    </cfif>

    <cfif isXml(httpBody)>

        <cfset xmlDoc = xmlParse(httpBody)>

        <cfdump var="#xmlDoc#">

    <cfelse>
        <cfoutput>Error: Body seems to contain malformed XML.</cfoutput>
    </cfif>

<cfelse>
    <cfoutput>Error: No Content-Type provided.</cfoutput>
</cfif>
...