ColdFusion CFHTTP Post到远程表单不返回结果页,它只返回输入表单

ColdFusion CFHTTP Post到远程表单不返回结果页,它只返回输入表单,post,coldfusion,cfhttp,Post,Coldfusion,Cfhttp,我正在使用ColdFusion 8。我正在尝试使用CFHTTP Post在此页面上提交表单,而无需用户输入数字并单击提交 我以前也用过其他形式,这通常不是问题 这是我的密码: <cfhttp url="https://testefile.boe.ca.gov/boewebservices/servlet/BOEVerification" method="POST" port="443" resolveurl="yes" redirect="yes"> <cfhttpparam

我正在使用ColdFusion 8。我正在尝试使用CFHTTP Post在此页面上提交表单,而无需用户输入数字并单击提交

我以前也用过其他形式,这通常不是问题

这是我的密码:

<cfhttp url="https://testefile.boe.ca.gov/boewebservices/servlet/BOEVerification" method="POST" port="443" resolveurl="yes" redirect="yes">
<cfhttpparam type="FORMFIELD" name="type" value="SALES">
<cfhttpparam type="FORMFIELD" name="account" value="10003">
<cfhttpparam type="FORMFIELD" name="Submit" value="Submit+Request">
</cfhttp>

<Cfoutput>#cfhttp.fileContent#</CFOUTPUT>

<cfdump var="#cfhttp#">

#cfhttp.fileContent#
如果您手动尝试该表单,并输入帐号10003,它将返回一个结果页面

但是当我使用cfhttppost时,它只返回输入页面

他们的一个开发人员制作了一个Java页面来做我正试图做的事情,它成功了。不幸的是,我不懂Java

谢谢


Rich

这可能是由于https地址造成的。您可能需要将证书导入java密钥库才能成功连接。在添加证书的过程中,请尝试以下帖子:

我猜您将获得输入页面,因为服务器正在重定向您。如果将redirect设置为“no”,cfhttp.errordetail中是否有有用的内容?

那么,数据是否实际提交到验证页面,或者它是否从未达到如此程度?

嘿,Rich,显示表单而不是预期结果的原因是“verification.jsp”当您点击模板查看结果时,它希望您有一个有效的会话。不能单独维护状态,因此类似的项目可能会有所帮助。CFHttpSession将通过解释Set-Cookie标头结果并将其添加回后续调用中来管理调用之间的Cookie(以及会话)

在查看服务器的响应头时,我注意到的另一件事是会话cookie(jsessionId)被设置为“secure”。这意味着cookie只能由安全连接使用。我没有在我的测试环境中设置SSL,所以我尝试使用Ben的对象失败了,但我认为如果您可以在SSL连接下进行测试,它很有可能会工作

下面是我使用Ben的项目所做的简单测试:

<!--- CFHttpSession does not follow redirects, this is why two calls are needed --->
<cfset objHttpSession = CreateObject("component","CFHTTPSession").Init() />

<cfset objResponse = objHttpSession.NewRequest( "https://testefile.boe.ca.gov/boewebservices/servlet/BOEVerification" )
 .AddFormField( "type", "SALES" )
 .AddFormField( "account", 10003 )
 .AddFormField( "Submit", "Submit+Request" )
 .Post()/>

<cfset objResponse = objHttpSession
 .NewRequest( "https://testefile.boe.ca.gov/boewebservices/verification.jsp" )
 .get() />

<cfoutput>#objResponse.filecontent#</cfoutput>

#objResponse.filecontent#

**可能还需要在其他http调用之前进行另一个http调用,以便在发布之前建立会话。

我遇到了相同的问题,并将CFID和令牌添加到请求中:
我们在本地(远程站点)进行了尝试,但仍然失败,所以可能不是关键。我想这是某种CFHTTP问题……当你在本地尝试时,你还在使用https地址吗?因为那时它很可能仍然是一个证书问题。CFHTTP对certsCan很挑剔。如果您共享了有效的Java代码,代码太大,无法添加为注释。我试图在下面添加一个新的回答,但stackoverflow认为我在回答我自己的问题。我会准备一个链接,谢谢你。我试过了,它也做了同样的事情,只是返回了输入表单页面,而不是结果页面。很遗憾听说Rich…你是在SSL下测试的吗?当外部站点切换到https时,这对我来说很有效。Ben的实用程序使处理安全cookie等变得很容易。是的,我已经和他们的开发人员谈过了,他们可以在他们的日志中看到我的帖子。如果我将重定向设置为“否”,cfhttp.errorDetail是空的。如果我将重定向设置为“否”,则返回的状态码为302“暂时移动”。如果直接转到cfhttp.location,它将返回输入表单。我认为coldfusion没有将表单字段传递到重定向页面