问一个关于http: multiple response.WriteHeader calls 错误的问题

haoyu_zjp · · 3230 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

首先,我使用了github.com/ant0ine/go-json-rest/rest 这个包 直接贴代码 ```go func Start(){ NeptuneLog := logs.New() api := rest.NewApi() api.Use(rest.DefaultDevStack...) router, err := rest.MakeRouter( rest.Get("/:type/:action", handle), rest.Post("/:type/:action", handle), ) if err != nil { NeptuneLog.Fatal(err) } api.SetApp(router) NeptuneLog.Fatal(http.ListenAndServe(":8080", api.MakeHandler())) } ``` =================start 负责调用 handle ==================== ```go func handle (w rest.ResponseWriter, r *rest.Request) { NeptuneLog := logs.New() t := r.PathParam("type") if (t == "submit") { action := r.PathParam("action") submitNode := SubmitNode{R:r,W:w,Action:action} SubmitChan <- submitNode NeptuneLog.Printf("%v",w) //node := test11{Action:action} //w.WriteJson(node) } else if t =="browser" { action := r.PathParam("action") browserNode := BrowserNode{R:r,W:w,Action:action} BrowserChan <- browserNode } else { //w.WriteJson("not found") } } ``` ============= handle 负责把request 和 response 放到结构体,然后放到channel ============ ```go func doSubmit () { NeptuneLog := logs.New() for item := range SubmitChan{ NeptuneLog.Println("111") node := test11{Action:item.Action} NeptuneLog.Printf("%v",node) NeptuneLog.Printf("%v",item.W) item.W.WriteJson(node) NeptuneLog.Printf("%v",item.W) } } ``` =========== dosubmit 真正干活,负责从channel拿东西,然后返回 ====== 调用之后,server打印出了 http: multiple response.WriteHeader calls 的错误 ==========更新下最新进展 ======== 我把打印的返回拿出来的 发现有 Conn.Write wrote more than the declared Content-Length 这个错误

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3230 次点击  
加入收藏 微博
2 回复  |  直到 2016-01-05 05:32:17
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传