ColdFusion CFHTTP Post to remote form не возвращает страницу результатов, она просто возвращает форму ввода

Я использую ColdFusion 8. Я пытаюсь использовать CFHTTP Post для отправки формы на этой странице без ввода пользователем номера и нажатия кнопки Submit. 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.

Спасибо,

Богатые

5 ответов

Привет, Рич, причина, по которой тебе показывают форму вместо ожидаемых результатов, состоит в том, что шаблон "valid.jsp" ожидает, что у тебя будет действительный сеанс, когда ты нажмешь его, чтобы просмотреть результаты. не поддерживает состояние самостоятельно, поэтому может помочь такой проект, как CFHttpSession.cfc Бена Наделя. CFHttpSession будет управлять файлами cookie (и, следовательно, сеансом) между вызовами , интерпретируя результаты заголовка Set-Cookie и добавляя их обратно при последующих вызовах.

Еще одна вещь, которую я заметил, просматривая заголовки ответа сервера, состояла в том, что cookie-файл сеанса (jsessionId) был установлен в "безопасный". Это означает, что cookie может использоваться только защищенными соединениями. У меня не настроен 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-вызов перед другими, чтобы установить сеанс перед вашим сообщением.

Итак, действительно ли данные отправляются на страницу BOEVerification или они никогда не заходят так далеко?

У меня возникла та же проблема, и я добавил CFID и Token к запросу: и заставил мой код работать.

Это может быть связано с адресом https. Вам, вероятно, потребуется импортировать сертификат в хранилище ключей Java для успешного подключения. Попробуйте этот пост для процесса добавления сертификата: http://www.coldfusionmuse.com/index.cfm/2005/1/29/keystore

Я предполагаю, что вы получаете страницу ввода, потому что сервер перенаправляет вас. Есть ли что-нибудь полезное в cfhttp.errordetail, если вы установите перенаправление на "нет"?

Другие вопросы по тегам