4

我正在使用 ColdFusion 8。我正在尝试使用 CFHTTP Post 在此页面上提交表单,而无需用户输入数字并单击提交。 https://testefile.boe.ca.gov/boewebservices/verification.jsp?action=SALES

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

这是我的代码:

<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#">

如果您手动尝试表单并输入帐号 10003,它会返回结果页面https://testefile.boe.ca.gov/boewebservices/verification_results.jsp

但是当我使用 CFHTTP Post 时,它只返回输入页面https://testefile.boe.ca.gov/boewebservices/verification.jsp?action=SALES

他们的一位开发人员制作了一个 Java 页面来做我想做的同样的事情,并且成功了。不幸的是,我不懂Java。

谢谢,

富有的

4

5 回答 5

2

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

在查看服务器的响应标头时,我注意到的另一件事是会话 cookie (jsessionId) 被设置为“安全”。这意味着 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>

** 可能还需要在其他人之前进行另一个 http 调用以在您的帖子之前建立会话。

于 2009-06-11T01:33:43.377 回答
0

It could be due to the https address. You will probably need to import the certificate into the java keystore to successfully connect. Try this post for the process to add the certificate: http://www.coldfusionmuse.com/index.cfm/2005/1/29/keystore

于 2009-06-05T02:16:38.383 回答
0

那么数据实际上是被提交到 BOEVerification 页面,还是永远不会到达那么远?

于 2009-06-10T23:52:25.717 回答
0

我遇到了同样的问题,并将 CFID 和 Token 添加到请求中:并让我的代码正常工作。

于 2009-08-05T19:45:37.907 回答
0

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

于 2009-06-10T16:10:38.753 回答