【发布时间】:2020-11-13 03:33:15
【问题描述】:
我正在尝试在 Go 中调用 API,如下所示,我声明了我的方法和其他内容,以便获得所需的响应,但我面临的问题是我不知道我是否有问题在我的请求或它返回的响应中有问题。
这也是我使用的传递数据和调用API的函数
func APICall(url string,method string,request string) []byte{
payload := strings.NewReader(request)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Access", "application/json")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
return body
}
func Search(c *gin.Context) {
url := "https://testapi-v3.iati.ir/Tools/Ping/*************"
method := "POST"
payload := "{\"Echo\":\"asd\"}"
resAsByte := APICall(url,method,payload)
fmt.Println(resAsByte)
var v map[string]interface{}
err := json.Unmarshal(resAsByte,&v)
fmt.Println(err)
}
顺便说一句
err := json.Unmarshal(resAsByte,&v)
不起作用,这是我得到的二进制响应
[171 86 114 77 206 200 87 178 82 74 44 78 81 210 81 242 12 112 76 73 41 74 45 46 6 138 152 152 233 25 153 152 234 25 155 235 25 26 27 43 213 2 0]
【问题讨论】:
-
那不是“废话数据”;那就是你打印一个字节片作为他们的代码点。您可以通过执行类似
fmt.Printf("%s", b)的操作来打印其字符串表示形式。无论如何,你应该提供一个minimal, reproducible example。 -
不幸的是,我应该给你一个令牌,出于安全原因,我不能这样做,但感谢你的回答