第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

沒有獲取使用 go 發(fā)送的表單數(shù)據(jù)

沒有獲取使用 go 發(fā)送的表單數(shù)據(jù)

Go
四季花海 2022-06-13 15:23:19
我是 Golang 的新手,來自 python 背景,我在管理表單請(qǐng)求時(shí)遇到了一些問題。我正在嘗試使用 Go 以表單格式發(fā)送數(shù)據(jù),以模仿這個(gè) curl 調(diào)用:curl -X POST -k  --cacert mycert --key mykey --cert cert "https://api/v1/house?action=paint&room=hall" -F "houses=street123"這是我在 API 服務(wù)器(在 Flask 上運(yùn)行)中看到的,通過 curl 檢查請(qǐng)求頭和表單信息進(jìn)行調(diào)用。標(biāo)題Host: localhostConnection: closeContent-Length: 152User-Agent: curl/7.29.0Accept: */*Content-Type: multipart/form-data; boundary=----------------------------991133af3afb形式ImmutableMultiDict([('houses', 'street123')])當(dāng)我使用我的 GO 代碼執(zhí)行此操作時(shí),我得到以下信息:標(biāo)題Host: localhostConnection: closeContent-Length: 18User-Agent: Go-http-client/1.1Accept-Encoding: */*Content-Type: multipart/form-data形式ImmutableMultiDict([])我在做什么:1-我正在生成一個(gè)客戶端以Generate_client使用相互 tls 進(jìn)行身份驗(yàn)證2-我正在使用map[string][]string作為有效負(fù)載的 API 調(diào)用并在調(diào)用之前打印它以確保它已正確構(gòu)造。我在調(diào)用函數(shù)時(shí)返回正文并打印它。這是我的結(jié)果:Doing Form callParams after maping:map[houses:[street123]]FULL-URL:https://api/v1/house?action=paint&room=hallParams encoded:&{houses=street123 0 -1}這是我的代碼func Generate_client() *http.Client {    caCert, err := ioutil.ReadFile(cacert)    checkForErrors(err)    caCertPool := x509.NewCertPool()    caCertPool.AppendCertsFromPEM(caCert)    // Create key pair for certificate    cert, err := tls.LoadX509KeyPair(cert, key)    checkForErrors(err)    client := &http.Client{        Transport: &http.Transport{            TLSClientConfig: &tls.Config{                RootCAs: caCertPool,                Certificates: []tls.Certificate{cert},            },        },    }    return client}func CallFormUrl(endpoint string, method string, dataPayload []string) string {    fmt.Println("Doing Form call")    FormMap := ConvertPayloadToMap(dataPayload)    params := url.Values{}    for key, value:= range FormMap{        params.Add(key,value)    }}為什么沒有發(fā)送表單數(shù)據(jù)?
查看完整描述

1 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

構(gòu)造一個(gè) multipart 請(qǐng)求比構(gòu)造簡單的 urlencoded 表單更冗長,所以如果您需要在很多地方使用 multipart,您可能希望將其抽象為一個(gè)可以讓您的生活更輕松的函數(shù)。


這是一個(gè)例子:


params := url.Values{"houses": {"street123"}}

buf := bytes.Buffer{}

w := multipart.NewWriter(&buf)

ct := w.FormDataContentType()


h := make(textproto.MIMEHeader)

h.Set("Content-Type", "application/x-www-form-urlencoded")

if pw, err := w.CreatePart(h); err != nil {

    panic(err)

} else if _, err := pw.Write([]byte(params.Encode())); err != nil {

    panic(err)

} else if err := w.Close(); err != nil {

    panic(err)

}


r, err := http.NewRequest("POST", "https://example.com", &buf)

if err != nil {

    panic(err)

}

r.Header.Set("Content-Type", ct)


re, err := client.Do(r)

// ...

https://play.golang.org/p/nzfUjBBh7_w


查看完整回答
反對(duì) 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)