【发布时间】:2018-10-31 14:21:36
【问题描述】:
我有一些 XMl 数据,我想使用 XML 数据发布到调度程序作业,因此使用 cfhttp 和 cfhttpparam。但是由于运行此代码后的原因,我无法在我的一个站点中安排工作。使用表单域、url 和 xml 尝试了所有选项,但没有成功。我正在使用 cfsavecontent 将所有数据保存到一个 xml 变量中,并使用该变量传递给 cfhttparam 值。不知道我在这里做错了什么。下面是代码
<cfsavecontent variable="getAllValues">
<start_job job="/cf/ecs/get_ecspseg1_data">
<params>
<param name="1_script" value="#script#" />
<param name="2_login" value="#login#"/>
<param name="3_customer" value="#customer#"/>
<param name="4_account" value="#account#"/>
<param name="5_begdate" value="#begdate#"/>
<param name="6_enddate" value="#enddate#"/>
</params>
</start_job>
</cfsavecontent>
<cfhttp url="http://ecs" port="4444" username="test" authType = "BASIC" password="testing*1" method="post">
<cfhttpparam type="xml" name="testing" value="#ToString(getAllValues)#"/>
</cfhttp>
这是更新后的代码:
<cfsavecontent variable="getAllValues">
<start_job job="/cf/smartecs/get_pseg1_data">
<params>
<param name="1_script" value="#script#" />
<param name="2_login" value="#login#"/>
<param name="3_customer" value="#customer#"/>
<param name="4_account" value="#account#"/>
<param name="5_begdate" value="#begdate#"/>
<param name="6_enddate" value="#enddate#"/>
</params>
</start_job>
</cfsavecontent>
<cfhttp url="http://10.xxx.xxx.xxx" port="4444" username="myusername" authType = "BASIC" password="mypassword" method="post" >
<cfhttpparam type="header" name="Content-Type" value="application/octet-stream">
<cfhttpparam type="body" name="testing" value="#getAllValues#"/>
</cfhttp>
【问题讨论】:
-
CFSaveContent 中的内容是“CFOutputted”吗?如果没有,则不会使用您想要的值。 (您可能还必须将日期格式化为可接受的格式,或者可以使用默认的类似 ODBC 的格式。)
-
是的,它周围环绕着
-
我只传递脚本名称,其余所有值都是默认值或空值
-
您可能需要将 XML 字符串的“类型”更改为“正文”,并可能设置“内容类型”标头。也许也可以通过“内容长度”。根据 ColdFusion 的版本(您没有提到),如果较旧,请将标题“TE”设置为“deflate;q=0”。
-
用建议的代码更新了代码。还是不行
标签: coldfusion cfhttp cfhttpparam