2009-06-04 15 views
4

Ich bin mit Coldfusion 8 Ich versuche CFHTTP Post verwenden Sie das Formular auf dieser Seite, ohne einen Benutzer zu übermitteln, die die Nummer einzugeben und klicken Sie auf Senden. https://testefile.boe.ca.gov/boewebservices/verification.jsp?action=SALESColdfusion CFHTTP Beitrag Remote Form nicht die Ergebnisseite zurückkehren, es gibt nur das Eingabeformular

ich mit, bevor sie mit anderen Formen getan haben, ist es in der Regel kein Problem.

Hier ist mein Code:

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

Wenn Sie das Formular manuell versuchen, und geben Sie die Kontonummer 10003, gibt es eine Ergebnisseite https://testefile.boe.ca.gov/boewebservices/verification_results.jsp

Aber wenn ich CFHTTP Pfosten benutzen, es gibt nur den Eingang https://testefile.boe.ca.gov/boewebservices/verification.jsp?action=SALES Seite

einer ihrer Entwickler eine Java-Seite die gleiche Sache zu tun zu tun, ich versuche, und es funktionierte. Leider kenne ich Java nicht.

Dank,

Rich-

+0

Können Sie den Java-Code teilen, der funktioniert hat? –

+0

Der Code ist zu groß, um ihn als Kommentar hinzuzufügen. Ich habe versucht, unten eine neue Antwort hinzuzufügen, aber stackoverflow dachte, dass ich meine eigene Frage beantworte. Ich werde einen Link darauf vorbereiten. – Rich

Antwort

0

Es aufgrund der https-Adresse sein könnte. Sie müssen das Zertifikat wahrscheinlich in den Java Keystore importieren, um eine Verbindung herzustellen. Versuchen Sie diesen Beitrag für den Prozess zum Hinzufügen des Zertifikats: http://www.coldfusionmuse.com/index.cfm/2005/1/29/keystore

+0

danke Ich werde das überprüfen – Rich

+0

wir haben es lokal (an der Gegenstelle) versucht und es ist immer noch fehlgeschlagen, so ist es wahrscheinlich nicht der Schlüssel. es ist eine Art von CFHTTP-Problem, denke ich ... – Rich

+0

Wenn Sie es lokal ausprobiert haben, haben Sie immer noch eine https-Adresse verwendet? Denn dann könnte es durchaus noch ein Zertifikatsproblem geben. CFHTTP ist pingelig über certs – Eli

0

Ich schätze, Sie erhalten die Eingabeseite, weil der Server Sie umleitet. Gibt es in cfhttp.errordetail etwas Nützliches, wenn Sie redirect auf "no" setzen?

+0

wenn ich Redirect auf "Nein" festlegen, ist cfhttp.errorDetail leer. Wenn ich Redirect auf "no" setze, wird der Statuscode 302 "Moved Temporarily" zurückgegeben. Die cfhttp.location ist https://testefile.boe.ca.gov/boewebservices/verification_results.jsp was, wenn Sie direkt gehen, das Eingabeformular zurückgibt. Ich denke, Coldfusion übergibt die Formularfelder nicht an die Weiterleitungsseite. – Rich

0

So sind die Daten tatsächlich auf die BOEVerification Seite vorgelegt werden, oder hat es nie so weit kommen?

+0

Ja, ich habe mit ihren Entwicklern gesprochen, und in ihren Protokollen können sie sehen, wie mein Post dorthin gelangt. – Rich

2

Hey Reich, der Grund, warum Sie an Stelle des erwarteten Ergebnisse, die die Form gezeigt werden, ist, weil die „verification.jsp“ Vorlage erwartet Sie eine gültige Sitzung haben, wenn Sie ihn treffen, die Ergebnisse zu sehen. < cfhttp> verwaltet den Status nicht selbst, daher könnte ein Projekt wie Ben Nadel's CFHttpSession.cfc hilfreich sein. CFHttpSession verwaltet Cookies (und somit Sitzungen) zwischen < cfhttp> -Anrufen, indem Set-Cookie-Header-Ergebnisse interpretiert und bei nachfolgenden Aufrufen hinzugefügt werden.

Eine andere Sache, die ich bemerkt, wenn sie bei der Server-Antwort-Header der Suche war, dass die Session-Cookie (JSESSIONID) wurde auf ‚sicher‘ eingestellt wird. Dies bedeutet, dass der Cookie nur von gesicherten Verbindungen verwendet werden kann. Ich habe kein SSL in meiner Testumgebung eingerichtet, so dass meine Versuche, Bens Objekt zu verwenden, fehlgeschlagen sind, aber ich denke, dass es eine gute Chance dafür gibt, wenn Sie unter einer SSL-Verbindung testen können.

Hier ist der einfache Test, den ich Bens Projekt habe mit:

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

** Es könne auch notwendig sein, einen anderen HTTP-Aufruf vor zu machen, um die andere die Sitzung vor Ihrem Beitrag zu etablieren.

+0

danke Jalpino. Ich habe es versucht und es hat das gleiche getan, nur die Eingabeformularseite zurückgegeben, anstelle der Ergebnisseite. – Rich

+0

Entschuldigung, dass Rich ... hast du unter SSL getestet? – jalpino

+0

Dies funktionierte gut für mich, wenn eine externe Website zu https wechselte. Bens Dienstprogramm machte es einfach, die sicheren Cookies usw. zu handhaben. – dadwithkids

0

Ich habe das gleiche Problem, und hinzugefügt, um die CFID und Token auf die Anfrage: und bekam meinen Code zu arbeiten.