2016-08-03 15 views
2

Я пытаюсь получить заголовки из HTTP-запроса. Я пробовал их echo, только чтобы получить ошибку компиляции. Я тоже пробовал перебирать заголовки. Мой код:Не удается получить HTTP-заголовки от запроса

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

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

И ошибка я получаю: Error: type mismatch: got (HttpHeaders)

+1

какая ошибка вы получаете? –

+1

@VaibhavBajaj Упс, забыли включить это. Обновлен вопрос. – innectic

ответ

2

Фигурного это - Оказывается, я могу назвать тот, который я хочу из списка. Пример: response.headers["X-CSRF-TOKEN"]

1

Причина ваш код не работает, потому что нет $ прока определен для HttpHeaders:

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

Мы можем быстро реализовать собственный $ процедурные себя:

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

Реализация основана на https://github.com/nim-lang/Nim/blob/master/lib/pure/collections/tables.nim#L333. Поскольку HttpHeaders - это всего лишь тип таблицы, мы можем просто повторно использовать существующий proc.

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