Как передать URL-адрес файла cookie с помощью Rebol 3?

Используя R3, мне нужно получить локализованную версию страницы с веб-сайта, который использует файлы cookie для обработки этого. В REBOL 2.x я мог сделать это:

page: http://www.rci.com/resort-directory/resortDetails?resortCode=0450         
read/custom page [header [Cookie: "USER_LOCALE=fr_FR"]]

Основываясь на отрывочных документах для R3, я смогу сделать что-нибудь вроде:

result: write page [GET [Cookie: "USER_LOCALE"] {fr_FR}]

У кого-нибудь есть идеи? Метод R2 работал хорошо, но поскольку R2 не поддерживает UTF-8, необходимый для многих иностранных языков, он здесь для меня мало полезен.

** Обновить **

Решение (переформулированное) в R2 для моего примера:

  1. Соберите необходимые параметры в cookie:

    cookie-str: "USER_LOCALE=fr_FR; USER_COUNTRY=US"
    
  2. Затем вставьте файл cookie в заголовок

    page-code: read/custom page reduce compose/deep ['header [Cookie: (cookie-str)]]
    

Решение для моего примера в R3:

page-code: to-string write page reduce compose/deep ['GET [Cookie: (cookie-str)]]

person Edoc    schedule 16.04.2015    source источник


Ответы (1)


Ваша попытка почти готова. Вы используете WRITE с небольшим «диалектом HTTP» в блоке аргументов всякий раз, когда вам нужно что-то настроить относительно отправляемого HTTP-запроса. Первый элемент этого диалекта - это используемый HTTP-метод, второй элемент (если он есть) - это блок заголовков HTTP для отправки.

Если я правильно понимаю ваш пример, вы хотите отправить cookie с "USER_LOCALE = fr_FR" в качестве полезной нагрузки. Итак, вы бы сделали:

write page [GET [Cookie: {USER_LOCALE=fr_FR}]]

Давайте проверим это с помощью http://httpbin.org/headers:

>> print to-string write http://httpbin.org/headers [GET [Cookie: "USER_LOCALE=fr_FR"]]     
{
  "headers": {
    "Accept": "*/*", 
    "Accept-Charset": "utf-8", 
    "Cookie": "USER_LOCALE=fr_FR", 
    "Host": "httpbin.org", 
    "User-Agent": "REBOL"
  }
}
person earl    schedule 17.04.2015
comment
Спасибо за советы. Изначально ваш код не работал у меня. Это связано с тем, что требуется еще один файл cookie, содержащий геолокацию. Рабочий пример кода: page-code: to-string запись страницы [GET [Cookie: USER_LOCALE = fr_FR; USER_COUNTRY = США]] - person Edoc; 18.04.2015