2016-08-03 11 views
2

私はHTTP要求からヘッダを取得しようとしているからHTTPヘッダを取得できません。私はechoを試してみましたが、コンパイルエラーが発生しました。私もヘッダーをループしてみました。は、要求

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

はそれを考え出した - 私は、リストから希望のものを呼び出すことができ判明します。例:HttpHeadersに定義されたの$ procはありませんので、あなたのコードが動作しないresponse.headers["X-CSRF-TOKEN"]

1

理由:

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

我々はすぐに自分の$ procを自分自身を実装することができます。

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