【问题标题】:How do I pass a URL a cookie using Rebol 3?如何使用 Rebol 3 将 URL 传递给 cookie?
【发布时间】:2015-04-16 19:09:46
【问题描述】:

使用 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注入到header中

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

【问题讨论】:

    标签: rebol rebol3


    【解决方案1】:

    你的尝试几乎在那里。每当您需要配置有关正在发送的 HTTP 请求的某些内容时,您可以在参数块中使用带有小型“HTTP 方言”的 WRITE。该方言的第一项是要使用的 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"
      }
    }
    

    【讨论】:

    • 感谢您的提示。最初你的代码对我不起作用。这是因为需要另一个 cookie,其中包含地理位置。代码的一个工作示例是: page-code: to-string write page [GET [Cookie: "USER_LOCALE=fr_FR; USER_COUNTRY=US"]]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2013-02-18
    • 2022-06-25
    • 2015-08-31
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多