2017-02-02 16 views
1

私は非常に奇妙な問題を抱えています。私は本当に盲目です。これは何らかのバグです。以下のFORM-データと、このハンドラにバインドさURLにPUTリクエストを送信する際に今r.PostFormとr.Formは常に空です

func ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    err := r.ParseForm() 
    if err != nil { 
     log.Println("Error while parsing form data") 
     return 
    } 
    log.Println("Printing r.PostForm:") 
    for key, values := range r.PostForm { // range over map 
     for _, value := range values { // range over []string 
      log.Println(key, value) 
     } 
    } 
    b, _ := ioutil.ReadAll(r.Body) 
    s := string(b) 
    log.Println("Printing body: ",s) 
} 

、::私は、次のhttp.Handlerを持って

Name=someName 
Version=1.0.0 
PLanguage=java 
GitRepo=someRepo 

これは、出力は常に次のとおりです。

Printing r.PostForm: 
Printing body: Name=someName&Version=1.0.0&PLanguage=java&GitRepo=someRepo 

私はすでに2のような時間のための原因を見つけるためにしようとしてきたと私はちょうど一体ここで何が間違っている見当がつかない。フォームデータの解析でエラーは発生しませんが、r.PostFormマップは常に空です(同じ結果を持つr.Formも試しました)。だから、デバッグのために私は本体を印刷する部分を追加しました。そこに実際にいくつかのデータがあることを確認するだけでした。私は本当にここで何か助けていただければ幸いです。前もって感謝します!

答えて

1

'Content-Type'ヘッダーを設定する必要があります。何ヘッダが「アプリケーション/オクテットストリーム」に設定されていない場合

をので、あなたの体はFormに解析されないバイナリ形式であるRFC 2616

ロングストーリーショートに従って使用されます。

+0

これは、ParseMultipartFormを試してエラーが発生した後、Content-Typeが設定されていないということです。だから私は適切なヘッダーを追加し、すべてが今働くようです。しかし、この答えのおかげです! – azaryc2s

関連する問題