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

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

將 curl 請求轉換為 Golang

將 curl 請求轉換為 Golang

Go
Helenr 2022-05-10 17:06:43
所以這個對 paypal 支付 API 的 curl 請求有效:curl --silent -v 'https://api.sandbox.paypal.com/v1/oauth2/token' \   -H "Accept: application/json" \   -H "Accept-Language: en_US" \   -u "${client_id}:${client_secret}" \   -d "grant_type=client_credentials"我感到困惑的一件事是:該-d選項適用于 HTTP 請求正文中的數據 - -d 選項是否使其成為 POST 請求,還是 curl 請求高于帶有正文的 GET 請求?我猜是后者,但我不確定curl --help.在golang我有:package mainimport (    "encoding/json"    "fmt"    "io/ioutil"    "log"    "net/http")const (    PayPalTestClientID = "Aeit5RskDRN8eUUMB0Ud3RjA_z6feWMUHktwlJZMeQMo9A9ulbKK"    PayPalTestSecret   = "EAAqyzrOTUWf-OFJCB4BxgXT4xuravL7pnkC8Tn20HYtZExd1mFO")func main() {    //reader := bytes.NewBuffer()    req, err := http.NewRequest("GET", "https://api.sandbox.paypal.com/v1/oauth2/token", nil)    if err != nil {        log.Fatal(err)    }    req.Header.Set("Accept", "application/json")    req.Header.Set("Accept-Language", "en_US")    req.Header.Set("Authorization", fmt.Sprintf("Basic %s:%s", PayPalTestClientID, PayPalTestSecret))    client := &http.Client{}    resp, err := client.Do(req)    if err != nil {        log.Fatal(err)    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        log.Fatal(err)    }    var v interface{}    err = json.Unmarshal(body, &v);    if err != nil {        log.Fatal(err)    }    log.Print(v)}客戶/秘密被混淆了,所以他們不會像上面寫的那樣工作。但是使用我得到的真實信用:2020/01/31 16:05:07 map[error:invalid_client error_description:Client Authentication failed]真正的信用確實可以使用 curl 命令。
查看完整描述

1 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

注意:提供的憑據有效嗎?因為我收到了一個sonorus 401 Authentication Failed,。


注意:使用-dincURL,您將發送POST請求而不是GET. 由于這種行為,您可能想要發送POST請求而不是GET


你可以使用我的小 http 庫:https ://github.com/alessiosavi/Requests/


package main


import requests "github.com/alessiosavi/Requests"


func main() {

    req, err := requests.InitRequest("https://postman-echo.com/basic-auth", "GET", []byte{}, false, false)

    if err != nil {

        fmt.Println("ERROR! ", err)

    }

    req.CreateHeaderList("Accept", "application/json", "Accept-Language", "en_US", "Authorization", "postman:password")

    client := &http.Client{}

    resp := req.ExecuteRequest(client)

    fmt.Println(resp.Dump())

}

您可以使用對服務進行身份驗證所需的數據(URL、發布數據、標頭)來更改數據。


在您的情況下,將是這樣的:


package main


import requests "github.com/alessiosavi/Requests"


const (

    ID= "Aeit5RskDRN8eUUMB0Ud3RjA_z6feWMUHktwlJZMeQMo9A9ulbKK"

    SECRET= "EAAqyzrOTUWf-OFJCB4BxgXT4xuravL7pnkC8Tn20HYtZExd1mFO"

)


func main() {

    req, err := requests.InitRequest("https://api.sandbox.paypal.com/v1/oauth2/token", "GET", []byte{"grant_type=client_credentials"}, false, false)

    if err != nil {

        fmt.Println("ERROR! ", err)

    }

    req.CreateHeaderList("Accept", "application/json", "Accept-Language", "en_US", "Authorization", ID+":"+SECRET)

    client := &http.Client{}

    resp := req.ExecuteRequest(client)

    fmt.Println(resp.Dump())

}


查看完整回答
反對 回復 2022-05-10
  • 1 回答
  • 0 關注
  • 373 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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