我是Go的新手,正在学习如何使用它。想测试是否符合Google Places API的要求,但在编写请求时遇到了一些麻烦。似乎请求通过了,我在体内收到了东西,但无法解组。我只想查看以字符串形式打印的json,以便尝试对其进行解码。感谢您的任何帮助,谢谢!
type place struct {
Name string `json:candidates`
}
func main() {
places("Grill")
}
func places(inputText string) {
url := "https://maps.googleapis.com/maps/api/place/findplacefromtext/"
placesClient := http.Client{
Timeout: time.Second * 10,
}
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("User-Agent", "Testing how to query API's from parameters")
q := req.URL.Query()
q.Add("key", PLACES_KEY)
q.Add("input", inputText)
q.Add("inputtype", "textquery")
req.URL.RawQuery = q.Encode()
pln(req.URL.String())
res, getErr := placesClient.Do(req)
if getErr != nil {
log.Fatal(getErr)
}
body, readErr := ioutil.ReadAll(res.Body)
if readErr != nil {
log.Fatal(readErr)
}
output := place{}
jsonErr := json.Unmarshal(body, &output)
if jsonErr != nil {
log.Fatal(jsonErr)
}
pln(output)
}
答案 0 :(得分:-1)
感谢您的帮助,最终找到了答案。问题部分是由于我对Places API的理解,我输入了https://maps.googleapis.com/maps/api/place/findplacefromtext/
,但需要确保将https://maps.googleapis.com/maps/api/place/findplacefromtext/json
放在JSON部分的末尾指定返回类型,否则我的身体会不断得到404错误。可以通过添加以下内容来解决此问题:
if res.StatusCode == 404 {
log.Fatal("Hit a 404")
}
此外,如果您只想打印字节字符串,这对我有用
n := len(body)
s := string(body[:n])
pln(s)
这使您可以更轻松地查看正在打印的内容