2016-05-12 2 views
3

Я ищу запрос в SoapUI, который отправляет информацию заголовка в конкретную конечную точку, но мне трудно воссоздать ее в ColdFusion.Преобразование SoapUI-запроса в CFHTTP

Ниже то, что запрос RAW выглядит в SoapUI:

>> "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]” 

Я не уверен, если я не правильно форматировать заголовок авторизации или что, но любая помощь будет большим.

EDIT У меня есть выход из файла RAW с клиента, который я обновил выше. Я все еще пытаюсь воссоздать этот заголовок в ColdFusion.

My new question (s): Знаки «Новая строка» имеют значение в значениях заголовка? Должен ли я также добавить параметр для типа содержимого?

я сделал попробовать следующее:

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

Когда я сбросить все от вызова cfhttp я получаю:

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 

я получаю код 200 OK статуса, но по-прежнему получаю Ошибка соединения.

+0

Не уверен, что я следую точный вопрос за того, что что-то не работает ;-) 1) Сначала начните с сброса полного ответа от cfhttp. Что такое ПОЛНОЕ сообщение об ошибке? 2) Чтобы уточнить, вы говорите, что «необработанный запрос» из SoapUI * преуспевает *, но cfhttp нет? 3) Как выглядит запрос «RAW-запрос» cfhttp и что между ними? – Leigh

+0

Я обновлю свой вопрос с информацией, упомянутой выше. Спасибо. \ – Denoteone

+0

Я добавил полный вывод orderList из запроса cfhttp. Мне сложно просматривать исходные заголовки на моем конце, потому что когда я отправляю свой запрос в локальный файл, заголовок авторизации отбрасывает его, потому что я должен добавить свое локальное имя пользователя и пароль для доступа к тестовой странице. Да SoapUI преуспевает, а Raw html выше. Запрос CFHTTP не выполняется. Если есть что-то конкретное, я могу запускать и выводить, просто дайте мне знать. – Denoteone

ответ

3

Похоже, вы дважды шифруете токен безопасности. Я изменил ваш код, чтобы зафиксировать запрос с помощью Fiddler по Leighs Answer. Чтобы получить ColdFusion для отправки трафика через Fiddler, я изменил Dmitri Pisarenko ответ на http и добавил его в свои аргументы JVM.

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

головка я получаю оставив cfhttp запрос является:

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 

Как вы можете видеть, заголовок Authorization не то же самое, что создало SoapUI.

Я изменил значение авторизации парам на: "Bearer 6EDC52118E164AE659EA2C772F3B9804" и я получаю заголовок с заголовком аутентификации, который соответствует необработанный заголовок из SoapUI:

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

Да. Похоже, что значение уже закодировано как hex, так как Twillen сказал, что вызов toBase64 не требуется. Кроме того, я не уверен, что необходим «основной» префикс. – Leigh

+0

Спасибо Twillen за подробный ответ. Я сейчас вношу изменения и буду следить в ближайшее время. +1 – Denoteone

+0

@Twillen & Leigh Я обновил свой вопрос с новым сырым html, который я получил от клиента, который я попытался обновить с помощью моего coldfusion с теми же результатами. Мне было интересно, видите ли вы что-нибудь, что я могу потерять. Благодарю. – Denoteone

Смежные вопросы