gpt4 book ai didi

go - Golang POST时出现403 Forbidden

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:21 28 4
gpt4 key购买 nike

我有一个由 Java Spring Boot 应用程序提供的 REST 端点,我试图用一个简单的 Go (go1.8 darwin/amd64) 程序访问它。我尝试以两种不同的方式击中它:

const (
LOCAL_BASE = "http://localhost:11400"
ADD_FUNDS_ENDPOINT = "/sub-accounts/%d/add-funds"
)

type InputArgumentsJson struct {
Amount float64 `json:"amount"`
BufferAmount float64 `json:"bufferAmount"`
FromSubAccountID int `json:"fromSubAccountId"`
}

...

// set up json body
inputArguments := &InputArgumentsJson{Amount: 1100, BufferAmount: 0,
FromSubAccountID: spendFundId}
bytes := new(bytes.Buffer)
json.NewEncoder(bytes).Encode(inputArguments)

// set up the url to call
endpoint := fmt.Sprintf(ADD_FUNDS_ENDPOINT, billSetAsideId)
url := LOCAL_BASE + endpoint

client := &http.Client{}

req, err := http.NewRequest("POST", url, bytes)
if err != nil {
fmt.Println("ERROR WHILE BUILDING REQUEST")
fmt.Println(err)
}

req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
fmt.Println("ERROR WHILE MAKING REQUEST")
fmt.Println(err)
}
fmt.Println(resp)

和:

resp, err := http.Post(url, "application/json; charset=utf-8", bytes)
if err != nil {
fmt.Println("ERROR WHILE MAKING REQUEST")
fmt.Println(err)
}
fmt.Println(resp)

我添加了一个打印输出以查看 URL 和 JSON 正文是否正确,它们看起来是:

fmt.Printf("\nMaking request to %s with:\n %s\n", url, bytes)

打印出来

Making request to http://localhost:11400/sub-accounts/167/add-funds with:
{"amount":1100,"bufferAmount":0,"fromSubAccountId":166}

但是我在运行它时收到 403 Forbidden。

我可以同时使用 Postman 和以下 Curl 命令成功命中此端点:

curl -H "Content-Type: application/json"-X POST -d '{"amount":1100,"bufferAmount":0,"fromSubAccountId":166}' http://localhost: 11400/子账户/167/添加资金

有没有人对我在这里可能遗漏的东西有任何想法?为了进一步增加吸引力,我可以成功地从 Go 程序中命中不同的 GET 端点。

提前致谢!

经过编辑以表明我正在捕获错误以及创建 URL 和 JSON 正文的相关逻辑

最佳答案

您没有说明什么是 bytes 但这很可能是问题所在:NewRequestPost 都采用 io.Reader 并从该阅读器中读取正文。这种读取通常只能发生一次(想想流)。当您使用 fmt.Printf("%s") io.Reader 时,此打印将消耗内容(很可能通过调用 String() 方法)和实际请求用体完成。

始终显示完整代码。并且不要尝试从 io.Reader 读取两次。

关于go - Golang POST时出现403 Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42654548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com