gpt4 book ai didi

api - Golang 向 API 的 POST 请求返回 400,而与 e. G。 postman 退回200

转载 作者:IT王子 更新时间:2023-10-29 02:10:09 26 4
gpt4 key购买 nike

在我的 Go 应用程序中,我使用 Web API,它接受 POST 请求并在成功时返回 token 。

网址如下:“https://accounts.zoho.com/apiauthtoken/nb/create?SCOPE=xxxx&EMAIL_ID=xxxx&PASSWORD=xxxx

如果我在 Postman 或任何其他工具中发送此消息,我将获得带有预期正文的状态代码 200,但在我的 go 代码中,相同的请求返回错误代码 400。

url := "https://accounts.zoho.com/apiauthtoken/nb/create?SCOPE=xxxx&EMAIL_ID=xxxx&PASSWORD=xxxx"

req, err := http.NewRequest("POST", url, nil)
log.Println(err)

res, err := client.Do(req)
log.Println(err)

defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
log.Println(err)

fmt.Println(res)
fmt.Println(string(body))

所有错误均为零,但 res 结构包含 400 Bad Request 并且(主体的)最后输出为空。

输出:

&{400 Bad Request 400 HTTP/1.1 1 1 map[Date:[Sat, 03 Mar 2018 16:48:35 GMT] Connection:[keep-alive] Set-Cookie:[a8c61fa0dc=5f224f2ab9d067cfce10fd0b7fae48bf; Path=/; Secure; HttpOnly] Server:[ZGS]] 0xc04225a080 -1 [chunked] false false map[] 0xc042034a00 0xc0421bc370}

我将不胜感激任何帮助,因为我不知道这个问题是从哪里来的。

最佳答案

URL 编码的参数应该在正文参数中提供,而不是作为查询字符串。所以这也可能是个问题。在实现 io.Reader 的主体中设置参数。

func NewRequest(method, url string, body io.Reader) (*Request, error)

在使用 Client.Do 发送请求之前,在您的请求中设置 header Content-Type。

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

因为 postman 足够聪明,可以为您设置标题。这就是为什么没有错误。整个代码变为

package main

import (
"log"
"net/http"
"net/url"
"io/ioutil"
"strings"
)
func main(){

url := "https://accounts.zoho.com/apiauthtoken/nb/create"

var data url.Values{}
data.Set("SCOPE","xxxx")
data.Add("EMAIL","xxxx")
data.Add("PASSWORD","xxxx")
req, err := http.NewRequest("POST", url, strings.NewReader(data.Encode()))
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

log.Println(err)

res, err := client.Do(req)
log.Println(err)

defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
log.Println(err)

fmt.Println(res)
fmt.Println(string(body))

}

关于api - Golang 向 API 的 POST 请求返回 400,而与 e. G。 postman 退回200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49086499/

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