如何将此XML请求发送到我的服务器并让它发送到另一台服务器并从另一台服务器获得响应

时间:2015-06-18 18:30:28

标签: xml https coldfusion

我的情况是我需要从安装在多个用户工作站上的桌面应用程序向用户验证服务器发送XML请求。验证服务器具有严格的白名单策略,因此它们不会接受来自IP可能会定期更改的多个用户的请求。

我认为解决方案是让我的桌面应用程序将XML请求发送到我的coldfusion网络服务器,我的网络服务器以某种方式将其发送到验证服务器,然后将响应发送回桌面应用程序。我不知道如何实现这一目标,而且我对网络服务器几乎无法控制,他们对我们可以放在那里的内容非常严格。

通过HTTPS,请求非常简单:

<?xml version ="1.0"?>
<cspinput appID="asdfasdf" appPassword="asdf1234" >
<account userid="johndoe" action="authenticate">
<password>mypasswd1234</password>
</account>
</cspinput>

并回应:

<?xml version ="1.0"?>
<cspoutput returnCode="0">
<account userid="johndoe" action="authenticate">
<returnValue>True</returnValue>
</account>
</cspoutput>

要明确我的问题是如何通过我的服务器和验证服务器获取此XML。我需要使用什么或者我需要创建能够做到的事情?我可以访问ColdFusion / ASP Web服务器。

2 个答案:

答案 0 :(得分:0)

首先,您可以使用cfsavecontent将xml内容保存到变量,然后通过cfhttp发布该变量。看看这个:http://www.bennadel.com/blog/745-posting-xml-with-coldfusion-cfhttp-and-cfhttpparam.htm

然后,您可以使用XMLParse(http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-6e90.html)解析服务器的响应,然后使用该页面上的点表示法(或地图表示法)来获取响应值。

答案 1 :(得分:0)

试试这个......

首先,保存数据包。

<cfsavecontent variable="theXMLPacket">
    <cspinput appID="asdfasdf" appPassword="asdf1234" >
        <account userid="johndoe" action="authenticate">
            <password>mypasswd1234</password>
        </account>
    </cspinput>
</cfsavecontent>

然后我们使用cfhttp将其发布到处理服务器。

<cfhttp method="post" url="https://someurl.com/endpoint" result="xmlResult">
    <cfhttpparam type="xml" value="#XMLParse(theXMLPacket)#" />
</cfhttp>

然后处理结果

<cfif structKeyExists(xmlResult.responseHeader,"status_code") AND xmlResult.responseHeader.status_code EQ 200> 
    <!--- request was successful --->
    <cfoutput>#XMLParse(xmlResult.Filecontent)#</cfoutput>
<cfelse>
    <!--- request failed --->
    <cfdump var="#xmlResult#" />
</cfif>

请注意,XML声明(&lt;?xml version =&#34; 1.0&#34;?&gt; )已从数据包中删除,因为之前的无效字符可能是java错误。