Использование HTTP-клиента для Places API в golang, Unmarshall JSON и недопустимых символах - PullRequest
0 голосов
/ 25 июня 2018

Я довольно новичок в 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)
}

1 Ответ

0 голосов
/ 25 июня 2018

Спасибо за помощь, в конечном итоге найти ответ.Частично проблема была связана с моим пониманием 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)

, это позволяет вам увидеть, что происходитпечатается проще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...