如何使用Rebol 3将URL传递给cookie?

时间:2015-04-16 19:09:47

标签: rebol rebol3

使用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)]]
    
  3. 我在R3中的示例的解决方案是:

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

1 个答案:

答案 0 :(得分:6)

你的尝试几乎。你使用WRITE和一个小的#34; HTTP方言"在需要配置有关正在发送的HTTP请求的某些内容时,在参数块中。该方言的第一项是要使用的HTTP方法,第二项(如果存在)是要发送的HTTP标头块。

如果我理解你的例子,你想发送一个带有" USER_LOCALE = fr_FR"的cookie。有效载荷。所以你要这样做:

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

让我们针对httpbin进行测试:

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