簡體   English   中英

golang 從 HTTP 客戶端傳遞數據負載

[英]golang passing data payload from HTTP client

我有一個 HTTPS 端點,可以很好地與這樣的 cURL 命令配合使用:

curl -k -u xyz:pqr \
  --data "grant_type=client_credentials" \
  https://my-url

現在我正在嘗試使用golang來調用相同的 API 端點,如下所示:

data := url.Values{}
data.Set("grant_type", "client_credentials")
req, err := http.NewRequestWithContext(
  ctx,
  "POST",
  "https://my-url",
  strings.NewReader(data.Encode())
)

它失敗並顯示錯誤正文:

  {
     "error_description":"grant_type is required",
      "error":"invalid_request"
  }

我已經將grant_type作為最后一個參數傳遞給http.NewRequestWithContext()函數。

我錯過了什么?

您沒有正確翻譯卷曲。 這個工具可能會有所幫助: https ://mholt.github.io/curl-to-go/

本質上,您需要添加用戶身份驗證。

req.SetBasicAuth("xyz", "pqr")
// Might help to set the `Content-Type` too
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

-k on curl 似乎也在從文件中讀取一些 curl 參數。 您將要確保您也翻譯這些內容。 從你的例子中我看不出它們是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM