ColdFusion CFHTTP Post to remote form не возвращает страницу результатов, она просто возвращает форму ввода - PullRequest
4 голосов
/ 04 июня 2009

Я использую 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.

спасибо,

Rich

Ответы [ 5 ]

2 голосов
/ 11 июня 2009

Привет, Рич, причина, по которой тебе показывают форму вместо ожидаемых результатов, заключается в том, что шаблон «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-вызов перед другими, чтобы установить сеанс перед вашим сообщением.

0 голосов
/ 05 августа 2009

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

0 голосов
/ 10 июня 2009

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

0 голосов
/ 11 июня 2009

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

0 голосов
/ 05 июня 2009

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

...