2016-05-12 13 views
3

Ich schaue auf eine Anfrage in SoapUI, die Header-Informationen zu einem bestimmten Endpunkt sendet, aber ich habe es schwer, es in ColdFusion neu zu erstellen.Convert SoapUI Anfrage in CFHTTP

Im Folgenden finden Sie, was die RAW-Anforderung wie in SoapUI aussieht:

>> "GET https://test-01.mywebsite.com/data_api//1.0/service/requests HTTP/1.1[\r][\n]" 
>> "Accept-Encoding: gzip,deflate[\r][\n]" 
>> "Authorization: Bearer A1BEC30F7E0273059E775A6A2645E273[\r][\n]" 
>> "Host: test-01.mywebsite.com[\r][\n]" 
>> "Connection: Keep-Alive[\r][\n]" 
>> "User-Agent: Apache-HttpClient/4.1.1 (java 1.5)[\r][\n]" 
>> "[\r][\n]" 
<< "HTTP/1.1 200 OK[\r][\n]" 
<< "Pragma: No-cache[\r][\n]" 
<< "Cache-Control: no-cache[\r][\n]" 
<< "Expires: Wed, 31 Dec 1969 16:00:00 PST[\r][\n]" 
<< "Content-Type: application/json;charset=UTF-8[\r][\n]" 
<< "Content-Length: 6796[\r][\n]" 
<< "Date: Fri, 13 May 2016 15:40:08 GMT[\r][\n]" 
<< "Server: hws[\r][\n]" 
<< "Set-Cookie: X-HR-ClientSessionId=2_10.85.12.121_1463154008475;Secure; path=/; HttpOnly[\r][\n]" 
<< "Content-Encoding: deflate[\r][\n]” 

Ich bin nicht sicher, ob ich nicht den Authorization-Header richtig Formatierung bin oder was aber jede Hilfe wäre toll.

BEARBEITEN Ich habe eine RAW-HTML-Ausgabe vom Client, die ich oben aktualisiert habe. Ich versuche immer noch, diesen Header in ColdFusion neu zu erstellen.

Meine neue Frage (n): Machen die Zeichen "Neue Zeile" einen Unterschied in den Header-Werten? Sollte ich auch einen Parameter für den Inhaltstyp hinzufügen?

Ich versuche tat folgendes:

<cfset NL="Bearer BD4DF031B24180C9338F0D9F060556A7" & Chr(10) & Chr(13)/> 

<cfhttp method="get" url="https://test-01.mywebsite.com/data_api//1.0/service/requests" result="orderList"> 
    <cfhttpparam type="HEADER" name="Authorization" value="#NL#"> 
    <cfhttpparam type="Header" name="Accept-Encoding" value="gzip,deflate"> 
</cfhttp> 
<cfset CurrentOrders = deserializeJSON(orderList.filecontent)> 

<cfdump var="#CurrentOrders#"> 

Wenn ich alles Dump vom cfhttp Anruf erhalte ich:

struct 
Charset  UTF-8 
ErrorDetail  [empty string] 
Filecontent  Connection Failure 
Header HTTP/1.1 200 OK Connection: close Expires: Wed, 31 Dec 1969 16:00:00 PST Date: Tue, 17 May 2016 19:23:36 GMT Server: hws Pragma: No-cache Cache-Control: no-cache Set-Cookie: X-HR-ClientSessionId=3_12.161.115.226_1463513016026;Secure; path=/; HttpOnly Content-Type: application/json;charset=UTF-8 
Mimetype application/json 
Responseheader 
struct 
Cache-Control no-cache 
Connection close 
Content-Type application/json;charset=UTF-8 
Date Tue, 17 May 2016 19:23:36 GMT 
Expires  Wed, 31 Dec 1969 16:00:00 PST 
Explanation  OK 
Http_Version HTTP/1.1 
Pragma No-cache 
Server hws 
Set-Cookie X-HR-ClientSessionId=3_12.161.115.226_1463513016026;Secure; path=/; HttpOnly 
Status_Code  200 
Statuscode 200 OK 
Text NO 

Ich erhalte einen Statuscode 200 OK, aber noch immer Ein Verbindungsfehler.

+0

nicht sicher, ob ich der genauen Frage über die Tatsache, dass etwas folgen funktioniert nicht ;-) 1) Beginne zuerst mit dem Dumping der kompletten Antwort von cfhttp. Was ist eine vollständige Fehlermeldung? 2) Zur Klarstellung sagen Sie, dass die "rohe Anfrage" von SoapUI * erfolgreich ist, aber cfhttp nicht? 3) Wie sieht die cfhttp "RAW Anfrage" aus und was ist zwischen den beiden? – Leigh

+0

Ich werde meine Frage mit den oben genannten Informationen aktualisieren. Danke. \ – Denoteone

+0

Ich habe die komplette Ausgabe von orderList aus der cfhttp Anfrage hinzugefügt. Es fällt mir schwer, die rohen Header an meinem Ende anzuzeigen, denn wenn ich meine Anfrage an eine lokale Datei sende, wird sie vom Autorisierungsheader abgeworfen, weil ich meinen lokalen Benutzernamen und mein Passwort hinzufügen muss, um auf die Testseite zugreifen zu können. Ja, die SoapUI ist erfolgreich und der Raw-HTML-Code ist oben. Die CFHTTP-Anforderung ist nicht erfolgreich. Wenn es etwas Spezifisches gibt, das ich ausführen und ausgeben kann, lass es mich wissen. – Denoteone

Antwort

3

Offenbar verschlüsseln Sie Ihr Sicherheitstoken doppelt. Ich habe Ihren Code geändert, damit ich die Anfrage mit Fiddler gemäß Leighs Answer erfassen konnte. Um ColdFusion dazu zu bringen, den Datenverkehr über Fiddler zu senden, habe ich die Antwort Dmitri Pisarenko für http geändert und sie zu meinen JVM-Argumenten hinzugefügt.

<cfhttp method="get" url="http://localhost/data_api/1.0/service/requests" result="orderList"> 
    <cfhttpparam type="HEADER" name="Authorization" value="BasiC#ToBase64("Bearer 6EDC52118E164AE659EA2C772F3B9804")#"> 
    <cfhttpparam type="Header" name="Accept-Encoding" value="gzip,deflate"> 
</cfhttp> 

Der Kopf Ich werde verlassen die cfhttp Anfrage:

GET http://localhost/data_api/1.0/service/requests HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
Accept-Encoding: gzip,deflate 
Connection: close 
Authorization: Basic QmVhcmVyIDZFREM1MjExOEUxNjRBRTY1OUVBMkM3NzJGM0I5ODA0 
Host: localhost 
Connection: Keep-Alive 

Wie Sie sehen können, der Authorization-Header ist nicht das gleiche wie das, was SoapUI erstellt.

modifizierte ich den Wert des Authorization param: "Bearer 6EDC52118E164AE659EA2C772F3B9804" und ich einen Header mit einem Authentifizierungs-Header erhalten, der den rohen Header von SoapUI matches:

GET http://localhost/data_api/1.0/service/requests HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko 
Accept-Encoding: gzip,deflate 
Connection: close 
Authorization: Bearer 6EDC52118E164AE659EA2C772F3B9804 
Host: localhost 
Connection: Keep-Alive 
+0

Ja. Es sieht so aus, als ob der Wert bereits als hex kodiert ist, so wie Twillen sagte, dass das Aufrufen von toBase64 nicht benötigt wird. Ich bin mir auch nicht sicher, ob das Präfix "Basic" auch benötigt wird. – Leigh

+0

Vielen Dank Twillen für Ihre ausführliche Antwort. Ich führe die Änderungen jetzt durch und werde in Kürze folgen. +1 – Denoteone

+0

@Twillen & Leigh Ich aktualisierte meine Frage mit neuem rohem HTML, das ich vom Klienten erhielt, den ich versucht habe, meine coldfusion mit den gleichen Resultaten zu aktualisieren. Ich habe mich gefragt, ob du etwas siehst, das ich vermisse. Vielen Dank. – Denoteone