2015-04-16 5 views
5

Mit R3 brauche ich eine lokalisierte Version einer Seite von einer Website, die Cookies verwendet, um dies zu handhaben. In REBOL 2.x, konnte ich dies tun:Wie übermittele ich mit Refol 3 eine URL als Cookie?

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

Basierend auf der skizzenhafte Dokumentation für R3, soll ich in der Lage sein etwas wie zu tun:

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

Wer irgendwelche Ideen? Die R2-Methode hat gut funktioniert, aber da R2 UTF-8 nicht für viele Fremdsprachen benötigt, ist es für mich hier wenig hilfreich.

** -Update **

Die Lösung (angepasst) in R2 für mein Beispiel ist:

  1. Setzen Sie die erforderlichen Parameter im Cookie:

    cookie-str: "USER_LOCALE=fr_FR; USER_COUNTRY=US" 
    
  2. Dann injiziere den Keks in die Kopfzeile

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

Die Lösung für mein Beispiel in R3:

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

Antwort

6

Ihr Versuch ist fast dort. Sie verwenden WRITE mit einem kleinen "HTTP-Dialekt" in einem Argumentblock, wenn Sie etwas über die gesendete HTTP-Anfrage konfigurieren müssen. Das erste Element dieses Dialekts ist die zu verwendende HTTP-Methode, das zweite Element (falls vorhanden) ist ein Block von HTTP-Headern, die gesendet werden sollen.

Wenn ich Ihr Beispiel richtig verstanden habe, möchten Sie ein Cookie mit "USER_LOCALE = fr_FR" als Payload senden. Also würden Sie tun:

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

Lassen Sie uns Test dies gegen einen 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" 
    } 
} 
+0

Danke für die Tipps. Anfangs würde dein Code für mich nicht funktionieren. Dies liegt daran, dass ein weiterer Cookie erforderlich ist, einer, der den geografischen Standort enthält. Ein funktionierendes Beispiel für den Code ist: Seitencode: to-string Seite schreiben [GET [Cookie: "USER_LOCALE = fr_FR; USER_COUNTRY = US"]] – Edoc

Verwandte Themen