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が返されるだけです。

彼らの開発者の 1 人が、私がやろうとしているのと同じことをする Java ページを作成しましたが、うまくいきました。残念ながら、私は Java を知りません。

ありがとう、

リッチ

4

5 に答える 5

2

リッチさん、期待した結果ではなくフォームが表示される理由は、「verification.jsp」テンプレートを押すと、結果を表示するときに有効なセッションがあることを期待しているためです。<cfhttp>はそれ自体では状態を維持しないため、 BenNadelのCFHttpSession.cfcのようなプロジェクトが役立つ場合があります。CFHttpSessionは、Set-Cookieヘッダーの結果を解釈し、後続の呼び出しでそれらを追加することにより、<cfhttp>呼び出し間のCookie(したがってセッション)を管理します。

サーバーの応答ヘッダーを確認したときに気付いたもう1つの点は、セッションCookie(jsessionId)が「セキュア」に設定されていることです。これは、Cookieはセキュリティで保護された接続でのみ使用できることを意味します。テスト環境でSSLを設定していないため、Benのオブジェクトを使用する試みは失敗しましたが、SSL接続でテストできれば、SSLが機能する可能性は十分にあると思います。

ベンのプロジェクトを使用して行った簡単なテストは次のとおりです。

<!--- 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

私は同じ問題を抱えていて、リクエストにCFIDとトークンを追加しました:そして私のコードを機能させました。

于 2009-08-05T19:45:37.907 に答える
0

では、データは実際にBOEVerificationページに送信されているのでしょうか、それともそれほど遠くまで到達することはないのでしょうか。

于 2009-06-10T23:52:25.717 に答える
0

サーバーがリダイレクトしているため、入力ページを取得していると思います。リダイレクトを "no" に設定した場合、cfhttp.errordetail に役立つものはありますか?

于 2009-06-10T16:10:38.753 に答える
0

httpsアドレスが原因である可能性があります。正常に接続するには、おそらく証明書を Java キーストアにインポートする必要があります。証明書を追加するプロセスについては、この投稿を試してください: http://www.coldfusionmuse.com/index.cfm/2005/1/29/keystore

于 2009-06-05T02:16:38.383 に答える