Недопустимый ответ Json при доступе к сторонней службе с помощью Wix Corvid

#json #fetch #response-headers #velo

#json #выборка #ответ-заголовки #velo

Вопрос:

Я пытаюсь собрать подробную информацию о свойствах недвижимости через внешний API. Я неустанно просматривал их документацию, но не могу понять, почему я получаю следующую ошибку:

invalid json response body at https://api.gateway.attomdata.com/propertyapi/v1.0.0/property/expandedprofile?address1=34 Karen Courtamp;address2=Bridgeport20%CT reason: Unexpected token < in JSON at position

Для справки я публикую свой код. Если кто-нибудь может предоставить какие-либо данные или рекомендации, я был бы очень признателен!

Внутренний код:

 
import { fetch } from 'wix-fetch';
import { wixData } from 'wix-data';

export function getDetails(address, citystatezip) {
 const url = 'https://api.gateway.attomdata.com/propertyapi/v1.0.0/property/expandedprofile?address1='   address   "amp;address2="   citystatezip;
 let headers = {
        "apikey": "xxxxxxxx",
        "accept": "application/json"
    };
 let options = {
        headers: headers
    }

    console.log("Url: "   url);

 return fetch(url, { method: 'get' })
        .then(response => {
 return response.json();
        })
        .then((data) => {
            console.log(data);
 return data;
        });
}
  
  

Код страницы:

 wixWindow.getCurrentGeolocation()
    .then((obj) => {
        let timestamp = obj.timestamp; // 1495027186984
        let latitude = obj.coords.latitude; // 32.0971036
        let longitude = obj.coords.longitude; // 34.774391099999995
        let altitude = obj.coords.altitude; // null
        let accuracy = obj.coords.accuracy; // 29
        let altAccuracy = obj.coords.altitudeAccuracy; // null
        let heading = obj.coords.heading; // null
        let speed = obj.coords.speed;
        console.log(obj)

        reverse(latitude, longitude)
            .then(geocode => {
                console.log(geocode)
        let id = geocode.results[0].place_id; 

        details(id)
            .then(detailed => {
                console.log(detailed)       

                $w("#input12").value = geocode.results[0].address_components[0].long_name   " "   geocode.results[0].address_components[1].long_name;
                $w("#input10").value = geocode.results[0].address_components[3].long_name;
                $w("#input11").value = geocode.results[0].address_components[5].long_name;
                $w("#text37").text = geocode.results[0].formatted_address;

                $w("#googleMaps2").location = {
                    "latitude": latitude,
                    "longitude": longitude,
                    "description": geocode.results[0].formatted_address

                };

                let address = geocode.results[0].address_components[0].long_name   " "   geocode.results[0].address_components[1].long_name;
                let city = geocode.results[0].address_components[3].long_name;
                let state = geocode.results[0].address_components[5].short_name;
                let citystate = city  ","   " "   state;
                console.log(citystate)

                const uri = address;
                const encoded = encodeURI(uri);
                console.log(encoded);

                getDetails(encoded, citystate)
                    .then(got => {
                        console.log(got)
                    })

            });
    });

  

Заранее благодарим вас за любые предложения или рекомендации, которые вы можете предложить. Я потратил часы, пытаясь разобраться в этом, но безрезультатно.

Будьте в безопасности и будьте здоровы 😊

Комментарии:

1. Добавьте console.log(response); перед собой return response.json(); , чтобы увидеть, с чем он возвращается. Еще лучше: установите точку останова return response.json(); и проверьте значение напрямую.

2. @JohnH благодарю вас за ваш ответ. Я внес несколько изменений в код, пожалуйста, смотрите выше.

3. Спасибо за редактирование, но ведение журнала консоли должно происходить внутри вашей getDetails() функции. Ведение журнала после этого уже слишком поздно, потому что он пытается вернуть JSON. Как я упоминал в своем первом комментарии, вам необходимо проверить значение response , чтобы увидеть, не происходит ли response.json() сбой.

4. Я добавил точку останова, как было предложено, и теперь результат отображается как неопределенный. Какие-либо мысли или рекомендации? @JohnH