2016-08-03 19 views
2

Ich versuche, die Header von einer HTTP-Anfrage zu bekommen. Ich habe versucht echo ing sie, nur um einen Kompilierfehler zu bekommen. Ich habe auch versucht, die Header zu durchlaufen. Mein Code ist:HTTP-Header können nicht von der Anfrage abgerufen werden

var packet = newMultipartData() 
packet["username"] = username 
packet["password"] = password 

var response = post(BASE & "users/login", multipart=packet) 
echo response.headers 

Und der Fehler Ich erhalte ist: Error: type mismatch: got (HttpHeaders)

+1

Welchen Fehler bekommen Sie? –

+1

@VaibhavBajaj Hoppla, ich habe vergessen, das einzuschließen. Die Frage wurde aktualisiert. – innectic

Antwort

2

figured it out - Es stellte sich heraus, dass ich das ein Anruf kann ich aus der Liste auswählen. Ex: response.headers["X-CSRF-TOKEN"]

1

Der Grund Code funktioniert nicht, weil es kein $ proc für httpheaders definiert ist:

let headers = newHttpHeaders() 
headers["foo"] = "bar" 
headers["foo2"] = "bar2" 
echo headers["foo"] # compiles 
echo headers   # does _not_ compile 

Wir können schnell einen eigenen $ proc implementieren sie:

proc `$`(h: HttpHeaders): string = 
    result = "{" 
    for key, value in h: 
    if result.len > 1: result.add(", ") 
     result.add(key) 
    result.add(": ") 
    result.add(value) 
    result.add("}") 

Die Implementierung basiert auf https://github.com/nim-lang/Nim/blob/master/lib/pure/collections/tables.nim#L333. Da HttpHeaders nur ein Typ für eine Tabelle ist, können wir das vorhandene Proc einfach wiederverwenden.

type 
    HttpHeaders* = ref object 
    table*: TableRef[string, seq[string]] 
Verwandte Themen