2016-08-24 2 views
1

을 사용하여 게시물 데이터 가져 오기 http 패키지에 익숙해 져 golang을 처음 사용했습니다. 우편 배달부를 통해 보내는 게시물 데이터를 가져 오는 데 문제가 있습니다.golang http 패키지

http://localhost:8084/dbTest은 나의 URI입니다. 나는 key : hub_id 값 : 1을 form-data를 사용하여 전달하고있다. 나는 다음과 같은 접근법을 시도했다.

req.ParseForm() 
fmt.Println("hub_id", req.Form["hub_id"]) 
req.Form.Get("hub_id") 

그러나 어떤 접근법도 시도하지 않았다. 나는 빈 반응을 얻고있다. 내가 얻을 REQ 인쇄 할 때

package main 

import (
    "fmt" 
    "net/http" 
    "log" 
) 

func dbtest(w http.ResponseWriter, req *http.Request) { 
    req.ParseForm() 
    fmt.Println("hub_id", req.Form["hub_id"]) 
    req.Form.Get("hub_id") 
    fmt.Println(req.PostFormValue("hub_id")) //response is empty 
} 

func main() { 

    http.HandleFunc("/dbTest", dbtest) 

    log.Fatal(http.ListenAndServe(":8084", nil)) 
} 

다음 :

&{POST /dbTest HTTP/1.1 1 1 map[Origin:[chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop] Connection:[keep-alive] Content-Type:[multipart/form-data; boundary=----WebKitFormBoundarydFOTVjOJMeqOHnS3] Content-Length:[138] Accept-Language:[en-US,en;q=0.8] Cache-Control:[no-cache] Accept-Encoding:[gzip, deflate] Accept:[*/*] User-Agent:[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36] Postman-Token:[ac7ae3a9-60f6-2146-3f1c-209de7622774]] 0xc210012e70 138 [] false localhost:8084 map[] map[] <nil> map[] 127.0.0.1:34152 /dbTest <nil>} 

해결 방법 : 다음

내 코드입니다 나는 해결책을 찾아 냈다. 이후, 콘텐츠 형식은 mulipart/form-data 양식을 구문 분석하는 올바른 방법은 req.ParseMultipartForm http 메서드를 사용하는 것입니다.

+0

html 템플릿을 표시하십시오. –

+0

우편 배달부를 통해 데이터를 전송합니다. – Jagrati

답변

1

을 시도했습니다 참조하십시오. Content-Type:application/x-www-form-urlencoded을 사용하는 경우 r.ParseForm()은 데이터를 올바르게 구문 분석합니다. 나중에 r.Form을 확인하십시오.

+0

더 설명해 주시겠습니까? 여기서 내용 유형은'Content-Type : [multipart/form-data; boundary = ---- WebKitFormBoundarydFOTVjOJMeqOHnS3]'POSTMAN에서 전송합니다. – Jagrati

+1

설명을 보려면 여기를보십시오 - http://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data#answer-4073451 우편 배달부에서 다른 '내용 유형 '. 본문 섹션에서 URL 주소 아래에 다른 유형을 선택할 수 있습니다. – s7anley

+0

예,'Content-Type : application/x-www-form-urlencoded'을 사용하여 값을 얻었지만 앞으로는 바이너리 (영숫자가 아닌) 데이터 (또는 상당한 크기의 페이로드)를 보내야한다고 가정합니다. 'multipart/form-data'가 사용되어야합니다. content-type이'multipart/form-data' 일 때 POST 데이터를 얻는 법. – Jagrati

0

err := r.ParseForm() 
v := r.Form 
h := v.Get("hub_id") 

편집을보십시오 : 당신은 당신이 잘못 Content-Type를 사용하는 ParseForm

+0

코드를 업데이트했습니다. 여전히 hub_id를 얻지 못했습니다. – Jagrati

+0

양식에서 Method = "POST"와 같은 데이터를 게시하고 있습니까? – Sridhar

+0

예, 저는 우편 배달부를 사용하여 데이터를 게시하고 있습니다. – Jagrati