亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 http 請求中設置 POST 正文

無法在 http 請求中設置 POST 正文

Go
慕村9548890 2023-07-17 17:12:22
這不是設置 POST 請求正文的正確方法嗎?data := url.Values{}data.Set("url", "https://www.google.com/")client := http.Client{}r, err := http.NewRequest(http.MethodPost, apiURL, strings.NewReader(data.Encode()))下面的代碼執行時表明請求url param中未發送任何內容POST。package mainimport (    "fmt"    "io/ioutil"    "net/http"    "net/url"    "strings")func doAPICall() {    // curl -XPOST -d 'url=https://www.google.com/' 'https://cleanuri.com/api/v1/shorten'    apiURL := "https://cleanuri.com/api/v1/shorten"    data := url.Values{}    data.Set("url", "https://www.google.com/")    client := http.Client{}    r, err := http.NewRequest(http.MethodPost, apiURL, strings.NewReader(data.Encode()))    if err != nil {        panic(err)    }    resp, err := client.Do(r)    if err != nil {        panic(err)    }    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        panic(err)    }    fmt.Println(string(body))}func main() {    doAPICall()}輸出:-$ go run .{"error":"API Error: URL is empty"}$ 
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

服務器期望 Content-Type 請求標頭具有有效值。


r, err := http.NewRequest(http.MethodPost, apiURL, strings.NewReader(data.Encode()))

if err != nil {

    panic(err)

}

r.Header.Set("Content-Type", "application/x-www-form-urlencoded") // <-- add this line

resp, err := client.Do(r)

服務器還支持 JSON 請求體:


r, err := http.NewRequest(http.MethodPost, apiURL, strings.NewReader(`{"url": "https://www.google.com/"}`))

if err != nil {

    panic(err)

}

r.Header.Set("Content-Type", "application/json")

resp, err := http.DefaultClient.Do(r)


查看完整回答
反對 回復 2023-07-17
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

你可以做這樣的事情


package main


import (

    "fmt"

    "io/ioutil"

    "net/http"

    "strings"

)


func main() {


    url := "https://cleanuri.com/api/v1/shorten"


    payload := strings.NewReader("url=https://www.google.com/")


    req, err := http.NewRequest("POST", url, payload)

    if err != nil {

        fmt.Println(err)

        return

    }


    req.Header.Add("content-type", "application/x-www-form-urlencoded")

    req.Header.Add("cache-control", "no-cache")


    res, err := http.DefaultClient.Do(req)

    if err != nil {

        fmt.Println(err)

        return

    }


    defer res.Body.Close()

    body, _ := ioutil.ReadAll(res.Body)


    fmt.Println(res)

    fmt.Println(string(body))


}


查看完整回答
反對 回復 2023-07-17
  • 2 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號